令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
分析:vector中保存第M到第N个素数,用cnt标记输出了多少个,如果当前已经输出的个数为10的倍数,则输出一个空行~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <iostream> #include <vector> using namespace std; bool isprime(int a) { for (int i = 2; i * i <= a; i++) if(a % i == 0) return false; return true; } int main() { int M, N, num = 2, cnt = 0; cin >> M >> N; vector<int> v; while (cnt < N) { if (isprime(num)) { cnt++; if (cnt >= M) v.push_back(num); } num++; } cnt = 0; for (int i = 0; i < v.size(); i++) { cnt++; if (cnt % 10 != 1) printf(" "); printf("%d", v[i]); if (cnt % 10 == 0) printf("\n"); } return 0; } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼