题目注意点
- 用埃氏筛法更快
- 输出格式,每十个数要换行
- 最多列举到104个素数,不妨将maxn设置的大一点
- 可以在素数个数达到要求个数时直接break出循环,缩短时间
实现
#include <stdio.h>
#include <math.h>
const int maxn = 1000010;
int prime[maxn], pNum = 0;
bool p[maxn] = {0};
void Find_Prime(int n) {
for (int i = 2; i < maxn; i++) {
if (p[i] == false) {
prime[pNum++] = i;
if (pNum >= n) break;
for (int j = i + i; j < maxn; j += i) {
p[j] = true;
}
}
}
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
Find_Prime(b);
int cnt = 0;
for (int i = a; i <= b; i++) {
printf("%d", prime[i - 1]);
cnt++;
if (cnt % 10 && i < b) printf(" ");
else printf("\n");
}
return 0;
}