题目描述
令Pi表示第i(i从1开始计数)个素数。现任给两个正整数M <= N <= 10000,请输出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
#include<iostream>
#include<vector>
using namespace std;
bool isPrime(int x) {
if (x <= 1) return 0;
for (int i = 2; i * i <= x; i++)
if (x % i == 0) return 0;
return 1;
}
int main() {
int m, n, count = 0, COUNT = 0;
vector <int> v;
cin >> m >> n;
for (int i = 2; i <= 10000; i++) {
if (isPrime(i))
count++;
if (count >= m && count <= n && isPrime(i))
v.push_back(i);
else if (count > n) break;
}
for (int i = 0; i < (n - m); i++) {
if (COUNT % 10 == 9 && COUNT != 0) {
cout << v[i] << endl;
COUNT = 0;
} else {
cout << v[i] << " ";
COUNT++;
}
}
cout << v[n - m];
}
简单题 需要注意的是格式和不要超时 尽量避免傻傻地遍历0-10000的素数判断
学会使用动态数组vector