1913: 快速查詢素數
阿新 • • 發佈:2019-02-03
題目描述
現在給你一個正整數N,要你快速的找出在2.....N這些數裡面所有的素數。
輸入
給出一個正整數數N(N<=2000000) 但N為0時結束程式。 測試資料不超過100組
輸出
將2~N範圍內所有的素數輸出。兩個數之間用空格隔開
樣例輸入
<span style="color:#333333"><span style="color:black">5
10
11
0</span></span>
樣例輸出
<span style="color:#333333"><span style="color:black">2 3 5 2 3 5 7 2 3 5 7 11 </span></span>
提示
來源
題目智慧推薦 1940 1264 2149 2111 2021 1848 |
程式碼:篩法求素數。
#include<stdio.h> #include<string.h>//memset函式標頭檔案 #include<math.h>//sqrt函式標頭檔案 int main() { int n; while(~scanf("%d",&n)&&n) { int a[n+1]; //注意陣列從0開始,多開一個。 memset(a,0,sizeof(a)); a[1]=1; for(int i=2;i<sqrt(n);i++) { if(a[i]==0) { for(int j=2;i*j<=n;j++) { a[i*j]=1; } } } for(int i=1;i<=n;i++) { if(a[i]==0) { a[i]=i; printf("%d ",a[i])//if(a[i]==0) {printf("%d ",i)} } } printf("\n"); } return 0; }