1013. 數素數
阿新 • • 發佈:2018-02-26
nbsp image oid 輸入 stdio.h span bool size col
題目截圖:
思路:
把素數表打至第 N 個素數,然後按格式輸出即可。
代碼:
1 /* 2 【PAT B1013】數素數 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 #include <math.h> 8 #include <stdlib.h> 9 #include <time.h> 10 #include <stdbool.h> 11 12 #define maxn 1000001 13 int pri[maxn], pNum=0;14 bool p[maxn] = {0}; // 表示數是否被篩掉 15 16 // 素數表的獲取,埃氏篩選 17 void findPrime(int n) { 18 int i; 19 for(i=2; i<maxn; ++i) { 20 if(!p[i]) { // 沒有被篩掉,為素數 21 pri[pNum++] = i; 22 if(pNum >= n) break; // 只把素數表打至第 N 個素數 23 int j; 24 for(j=i+i; j<maxn; j+=i) { // 篩掉倍數 25 p[j] = true; 26 } 27 } 28 } 29 } 30 31 int main() { 32 int m, n; 33 scanf("%d%d", &m, &n); // 輸入 m,n 34 findPrime(n); // 生成素數表 35 int i, cnt=1; 36 for(i=m; i<=n; ++i) { 37 printf("%d", pri[i-1]); // 數組下標從 0 開始 38 if((cnt++)%10 && i<n) printf(" "); 39 else printf("\n"); // 每10個數字占1行 40 } 41 42 return 0; 43 }
1013. 數素數