1913: 快速查找素数
时间限制: 4 Sec 内存限制: 64 MB
提交: 165 解决: 61
[提交][状态][讨论版]
题目描述
现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。
输入
给出一个正整数数N(N<=2000000) 但N为0时结束程序。 测试数据不超过100组
输出
将2~N范围内所有的素数输出。两个数之间用空格隔开
重点:
素数的筛选法则
附AC代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
int a[2000000];
int main()
{
int N;
while(scanf("%d",&N))
{
if(N==0) break;
int i;
memset(a,0,sizeof(a));//关键步骤
a[1]=1;
for( i=2; i<=sqrt(N); i++)
{
if(a[i]==0)
{
for(int j=2; j*i<=N; j++)
{
a[i*j]=1;
}
}
}//关键步骤
for(i=1;i<=N;i++)
{
if(a[i]==0)
{
printf("%d ",i);
}
}
printf("\n");
}
return 0;
}