求质数是非常重要的。
先说一种最基本的求法。
bool isprime(const int n){
if(n==1)
return 0;
for(int A=2;A<n;A++){
if(n%A==0)
return 0;
}
return 1;
}
枚举,从2开始,到n-1,如果没有一个是n的因数,那就返回1,是质数;
如果有,就返回0,不是。
另一种质数筛。
bool ssb[1001000];//素数表
void ycl(){//预处理素数
for(int i=2;i<=1000000;i++){
if(hs[i]) continue;
gs++,ssb[gs]=i;
int k=2;
while(i*k<=1000000)
hs[i*k]=1,k++;
}
}
ycl函数负责处理质数表。
以后如果需要用到,判断a是不是质数,可以直接用
ssb[a]
,如果是0,就是质数;是1,就是合数。