判断素数遇到的问题

1.

未优化的代码

bool isok(long long nn)
{
        if(nn==1)return 0;
	for(int i=2;i*i<=nn;i++)
	{
		if(nn%i==0)return 0;
	}
	return 1;
}

优化后的代码   //两倍的速度

bool isok(long long&nn)
{
	if(nn==1)return 0;
	if(nn==2)return 1;
	if(nn%2==0)return 0;
	for(long long i=3;i*i<=nn+2;i+=2)
	if(nn%i==0)return 0;
	return 1;
}

2.

1既不是素数也不是合数    

2是素数

猜你喜欢

转载自www.cnblogs.com/carcar/p/9314117.html