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;
}