written by: 东篱下の悠然
思路:
- 要求输出从第 l 到第 r 的素数,至少需要找到前 r 个素数,保存一下,再从第 l 个开始输出
学习:
- 判断素数函数isprime
代码:
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int a) { //判断素数
if(a == 1) return 0;
for(int i = 2; i * i <= a; i ++) {
if(a % i == 0) return 0;
}
return 1;
}
int a[10005];
int main() {
int l, r; cin >> l >> r;
int cnt = 0;
int i = 0;
while(cnt <= r) { //寻找前r个素数
i ++;
if(isPrime(i)) { //如果是素数,就先存储一下
cnt ++;
a[cnt] = i;
}
}
cnt = 0;
for(int i = l; i <= r; i ++) { //速出l到r的部分
cnt ++;
if(i == r) cout << a[i];
else if(cnt % 10 == 0) cout << a[i] << endl;
else cout << a[i] << " ";
}
return 0;
}