【待完善】质数

说明:本篇文章待完善中,如有错误,感谢指正。


质数

定义

如果一个大于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;
}

猜你喜欢

转载自blog.csdn.net/wingrez/article/details/81394804