筛法求素数的过程,两个For循环:
for(int i=2;i<1000000;i++)
{if(a[i]g
for(int j=i+i;j<100000;j+=i)
a[i]=0;
}
前面进行筛法的预处理后,再进行后面的判断并查找素数;
快速查找素数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。
-
输入
-
给出一个正整数数N(N<=2000000)
但N为0时结束程序。
测试数据不超过100组
输出
-
将2~N范围内所有的素数输出。两个数之间用空格隔开
样例输入
-
5 10 11 0
样例输出
-
2 3 5 2 3 5 7 2 3 5 7 11
-
给出一个正整数数N(N<=2000000)
<pre name="code" class="cpp">#include<stdio.h>
#include<math.h>
int a[2000020];
int m;
int main()
{
for(int i=2; i<2000001; i++)
a[i]=i;//先对数组a赋值
a[1]=0;
for(int i=2; i<2000001; i++)
{
if(a[i])//判断
for(int j=i+i; j<2000001; j+=i)
a[j]=0;//控制
}
while(scanf("%d",&m)!=EOF)
{
if(m==0)
break;
for(int i=1; i<=m; i++)
{
if(a[i])
printf("%d ",i);
}
printf("\n");
}
return 0;
}