令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤10^4,请输出 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
C++sqrt参数要求double,但是参数可以自动转换为double类型
#include <iostream>
#include<cmath>
using namespace std;
//判断是不是素数的函数
bool isprime(int m);
//寻找第几个素数是谁的函数
int posprime(int pos);
int main() {
int m, n;
cin >> m >> n;
// k用来表示当前的数字
int pm = posprime(m), pn = posprime(n), i = 0, k = pm;
while (k <= pn) {
if (isprime(k)) {
i++;
//判断空格是否输出
if (i % 10 == 1) {
cout << k;
}
else {
cout << " " << k;
}
if (i % 10 == 0) {
cout << endl;
}
}
k++;
}
return 0;
}
//判断是否是素数的函数
bool isprime(int m) {
//C++sqrt参数要求double,但是参数可以自动转换为double类型
for (int i = 2; i <= sqrt(m); i++) {
if (m % i == 0) {
return false;
}
}
return true;
}
int posprime(int pos) {
if (pos <= 0) {
return -1;
}
else {
int num = 0, i = 0;
for (i = 2; num < pos; i++) {
if (isprime(i)) {
num++;
}
}
//循环完了最后i++还会加一遍
return i - 1;
}
}