1. 程式人生 > >1013. 數素數

1013. 數素數

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. 數素數