令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 PM 到 PN 的所有素数,每 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
结尾无空行
需要有一个判断素数的函数和一个计数器,用于统计当前数字是第多少个素数,当计数器位于MN之间的时候输出素数的值。
要注意换行和空格,新手处理这些问题时反而容易出错。
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int num) {
int i;
if (num > 3 && num % 2 != 0) {
for (i = 3; i <= (int)sqrt(num); i += 2) {
if (num % i == 0)
return false;
}
}
if (num % 2 == 0 && num != 2)
return false;
return true;
}
int main() {
int M, N;
cin >> M >> N;
int i = 2;
int count = 0;
while (count < N ) {
if (isPrime(i)) {
count++;
if (count - M >= 0) {
if ((count - M) % 10 == 0 && (count - M) != 0)
cout << endl;
if (count >= M && count <= N) {
printf("%d", i);
if (!((count - M + 1) % 10 == 0 && (count - M + 1) != 0) && count != N) {
printf(" ");
}
}
}
}
i++;
}
return 0;
}