您的位置:首页 > 其它

判断一个数是否是质数

2013-04-12 10:27 218 查看
题目:

          判断请判断429496731是否是质数?

方法:

          要判断N是否是质数只要判断N除以[2,N的平方根]这个区间中的数,若其中有一个数是N的因子,则N就不是质数,否则N为质数。

该方法时间复杂度为0(根号N)。

原理:

         为什么要从(根号N)开始除起呢?这是一个数学问题。我们令w:=(根号N),则可知W^2等于N。易知若N可以除尽[2-----w]中的数,则其商必属于[w,N]这个区间中,也即是若N存在因子,则因子必关于W‘对称’,这样就使时间复杂度降为(根号N)。

代码:

         这个算法很简单,c++代码如下:

//@pre Vnumber.number>=2 ∧ N(number)∧ number< 429496726
//@post rv<->Vi.i>1∧i<number->number ≡ 0 (mod i)
bool Number::core_isPrime(double number)const
{
int temp=static_cast<int>(std::sqrt(number));
double result_temp;
while (temp!=1)
{
result_temp=number/temp;
if(result_temp-static_cast<int>(result_temp)==0)
{
return false;
}
temp--;
}
return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 质数