素数定理整合

埃拉托色尼筛法

基本素数判别法:

正整数n是素数,当且仅当他不能被任何一个小于sqrt(n)
的素数整除

定理:

如果m是一个合数,那么n一定有一个不超过sqrt(n)的素因子

推论:

如果n是一个合数,那么n必有小于等于sqrt(n)的素因子

6N+1法

任何数都可以构造成6N+1,6N+2,6N+3,6N+4,6N+5
只有形如:6N+1和6N+5有可能是素数,其中2,3是特殊的

const int maxn=1000000;

int prime[maxn],nprime=0;
bool Isprime(int x)
{
	if(x%2==0)
		return false;
	for(int i=3;i*i<=x;i+=2)
		if(!(x%i))
			return false;
	return true;
}

void doprime()
{
	prime[nprime++]=2;
	prime[nprime++]=3;
	for(int i=6;i<=maxn;i+=6)
		for(int j=-1;j<=1;j+=2)
			if(Isprime(i+j))  
				prime[nprime++]=i+j;	
}
posted @ 2017-10-13 09:49  pprp  阅读(513)  评论(0编辑  收藏  举报