1.埃氏筛法
for(int i=2;i<=n;i++)
{
if(fl[i]==0) prime[++tot]=i;
for(int j=1;j<=tot&&i*prime[j];j++)
{
fl[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
prime数组存的就是所求的质数
2.威尔逊定理
p是质数 (p-1)!≡-1(mod p) 这两个条件可以互推
3.费马小定理
若p是质数,a为正整数,且a与p互质,则
证明过程用到了威尔逊定理
4.Miller-Rabim 素数测试
输入n,判断n是否为质数,如果n为质数,那一定满足费马小定理,所以可以随机输出几个a,判断是否满足费马小定理,如果都满足,那基本上就是质数了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>