此代码可求出[0,n-1]区间内的素数,所以若想求出[0,n]区间内的素数,可输入n+1的数值。
#include <stdio.h>
#include <math.h>
int main()
{
int n,i,j;
printf("请输入一个整数n,将n-1作为求素数区间内的最大值:");
scanf("%d",&n);//输入数组范围[0,n]
int a[n];
for(i=2;i<n;i++)
{
a[i]=i;//定义变量 [0,n-1]
}
for(i=2;i<sqrt(n);i++)
{
for(j=i+1;j<n;j++)
{
if(j%i==0)//筛出非素数
{
a[j]=0;//将非素数的变量赋值为0
}
}
}
printf("[0,%d]区间中的素数有:",n-1);
for(i=2;i<n;i++)
{
if(a[i]!=0)//筛出非0变量,即为素数的变量
{
printf("%5d",a[i]);//输出素数
}
}
return 0;
}
例如:若想求出[0,100]内的素数,可输入101,运行结果如下: