把当时的代码放出来,大家共同学习,互相帮助
题目:
输入样例:
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<string.h>
using namespace std;
#define N 104730
int prime[N], cnt = 0;
bool isprime[N];
void mkprime() { // 欧拉筛法求素数
memset(prime, 0, sizeof(prime));
memset(isprime, false, sizeof(isprime));
for (int i = 2; i < N; i++) {
if (!isprime[i])
prime[cnt++] = i;
for (int j = 0; j < cnt && i * prime[j] <= N; j++) {
isprime[i * prime[j]] = true;
if (i % prime[j] == 0)
break;
}
}
}
int main() {
int first, end, count = 0;
cin >> first >> end;
mkprime();
for (int i = first - 1; i < end; i++) { // 打印 first -> end 间的素数
if (count > 0 && count % 10 == 0) { // 每10个换行输出
cout << endl << prime[i] << ' ';
}
else if (count % 10 == 9 || i == end - 1) // 每行末尾及最后一个素数后不输出空格
cout << prime[i];
else
cout << prime[i] << ' ';
count++;
}
return 0;
}