找素数 pat 乙 1013
#include<iostream>
#include<algorithm>
using namespace std;
#define maxSize 1000001
//筛法找素数
int findprime(int n, int prime[]) { //n为素数的区间MAX,以及素数数组(记录表)
int p[maxSize] = { 0 };//初始化一个1000001大小的数组(查找表)
int num = 0;//记录表中数据个数
for (int i = 2; i < maxSize; i++) {//最小的素数为2
if (p[i] == 0) {
prime[num++] = i;//查找表中的下标为素数的,放入记录表中
if (num >= n)//查找个数达到要求,即退出
break;
for (int j = i + i; j <= maxSize; j += i) {//筛法关键:素数的倍数必定不是素数
p[j] = 1; //将查找表中是素数倍数的标记为1(data).和IF配合,在查找表2开筛
}
}
}
}
int main() {
int prime[10000] = {};
int m, n;
cin >> m >> n;
int count = 0;
findprime(n, prime);
for (int i = m; i <= n; i++) {
++count;
if (count % 10 != 0 && i < n) {
cout << prime[i - 1] << " ";
}
else if (count % 10 == 0 && i < n)
cout << prime[i - 1] << endl;
else if (i = n)
cout << prime[i - 1];
}
return 0;
}
pat 1013 筛法
最新推荐文章于 2021-04-09 11:45:01 发布