一种高效的素数筛法,几乎是线性的时间复杂度。
当然,对于大数的素数判断,筛法就无能为力了,因为内存会超限,无法开出大数组。
那么如何对大数进行素数判断呢,这里就给出算法名——Miller Rabin算法~
#include <iostream>
#include <cmath>
using namespace std;
const int MAXN = 10000;
bool noPrime[MAXN];
int main() {
for (int i = 1; i*i <= MAXN; ++i)
if (noPrime[i])
for (int j = i + i; j <= MAXN; j += i)
noPrime[j] = true;
return 0;
}