实际上,除了对每一个素数进行单点判定的方法外,筛法也可以快速的求出大规模的素数。
例如 2是素数,那么所有以2为倍数的数字(例如4 6 8 10 12等等)肯定都不是素数了。
那么我们需要做的就是从2开始筛选,直到筛选出题目要求的所有的素数即可。
先输入两个数字M和N(M < N),然后就输出M和N之间的所有的素数。
#include <iostream>
using namespace std;
const int maxn = 110;
bool prime[maxn] = {false};
int m,n;
void find_prime(){
for(int i = 2;i < maxn;i ++)
if(prime[i] == false)
for(int j = i + i;j < maxn;j += i)
prime[j] = true;
}
int main()
{
find_prime();
cin >> n >> m;
for(int i = n;i <= m;i ++)
if(prime[i] == false)
cout << i << " ";
return 0;
}
/*
sample input:
2 99
sample output:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
*/