PAT 乙級 1013.數素數 C++/Java

題目來源html

令 Pi​​ 表示第 i 個素數。現任給兩個正整數 MN104​​,請輸出 PM​​ 到 PN​​ 的全部素數。ios

輸入格式:

輸入在一行中給出 M 和 N,其間以空格分隔。spa

輸出格式:

輸出從 PM​​ 到 PN​​ 的全部素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。code

輸入樣例:

5 27

輸出樣例:



11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103

分析:

將1 - PN的素數都求出來,即:記錄素數的個數count,當count等於第PN的時候,循環結束htm

 

C++實現

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 
 6 bool isprime(int n)
 7 {
 8     for (int i = 2; i * i <= n; ++i)
 9     {
10         if (n % i == 0)
11         {
12             return false;
13         }
14     }
15     return true;
16 }
17 
18 int main()
19 {
20     int num = 2, N, M;
21     int count = 0;    //記錄素數個數
22     vector<int> v;
23     cin >> M >> N;
24 
25     while (count < N)
26     {
27         if (isprime(num))
28         {
29             ++count;
30             if (count >= M)
31             {
32                 v.push_back(num);
33             }
34         }
35         ++num;
36     }
37 
38     count = 0;
39     for (int i = 0; i < v.size(); ++i)
40     {
41         ++count;    //控制輸出行數
42         if (count % 10 != 1)
43         {
44             cout << " ";
45         }
46         cout << v[i];
47         if (count % 10 == 0)
48         {
49             cout << endl;
50         }
51     }
52 
53 
54     return 0;
55 }
相關文章
相關標籤/搜索