1013 数素数

令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 P​M​​ 到 P​N​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

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 #include<iostream>
 2 #include<stdlib.h>
 3 using namespace std;
 4 
 5 bool judge(int n) {  //判断是不是素数
 6     for (int i = 2; i*i <= n; i++) {
 7         if (n%i == 0) {
 8             return false;
 9         }
10     }
11     return true;  //这个true一定要在for循环外面。。。
12 }
13 
14 int main() {
15     int M, N;
16     cin >> M >> N;
17     int cnt = 0, temp = 0;  
18     for (int i = 2; cnt<N; i++) {  //cnt从0开始,所以要小于
19         if (judge(i)) {
20             cnt++;
21             if (cnt >= M) {
22                 cout << i;
23                 temp++;   //temp用来实现每10个数字占1行
24                 if (cnt < N) {           //这个if不能少,因为当最外层的for循环执行到最后一次的时候
25                     if (temp < 10) {     //cnt++ 之后 cnt=N 这个时候再输出空格或者换行就一定会出错
26                         cout <<' ';
27                     }
28                     else {
29                         cout << '
';
30                         temp = 0;
31                     }
32                 }
33             }
34         }
35     }
36     return 0;
37 }
这类题一定要注意边界条件!
原文地址:https://www.cnblogs.com/oaoa/p/10693051.html