说明:本篇文章待完善中,如有错误,感谢指正。
质数
定义
如果一个大于1的正整数,不能被1和它本身之外的任何正整数整除,那么称这个数为质数,否则称合数。规定1既不是质数也不是合数。
算法实现
//计算小于等于n的质数个数cnt
#define MAXN 1000000+10
int prime[MAXN];//存放质数,初值为0,从0开始
bool vis[MAXN]; //初值为0
int cnt;//对质数计数,初值为0
void get_prime(int n){
for(int i=2;i<=n;i++){
if(vis[i]==0){
prime[cnt++]=i;
}
for(int j=0;j<cnt && i*prime[j]<=n;j++){
vis[i*prime[j]]=true;
if((i%prime[j])==0) break;
}
}
}
//判断n是否是质数
#include<math.h>
int is_prime(int n) {
if(n==2 || n==3 ) return 1 ;
if(n%6!=1 && n%6!=5) return 0 ;
int t=sqrt(n);
for(int i=5; i<=t;i+=6)
if(n%i==0 || n%(i+2)==0)
return 0;
return 1;
}