判断一个数是否是质数
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++代码如下:
判断请判断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; }
相关文章推荐
- 一个判断是否为质数的正则表达式
- 判断一个数是否是质数的方法
- 第二周作业 2.1——判断一个正整数是否为质数的算法
- [C#]调用方法判断一个整数是否为质数
- 1、判断一个数是否为素数,并求出1-1000中的全部素数(素数即质数,除1和自身以外没有其它因子,最小的质数是2)。
- 判断一个自然数是否为质数的算法
- 2.1: 判断一个正整数是否为质数的算法
- 判断一个正整数是否为质数的算法
- 【笔试】Java判断一个正整数是否为质数(素数)。
- JavaScript如何判断一个整数是否为质数
- 第二周作业 判断一个数是否为质数
- 问题:判断一个自然数是否是质数。
- 判断一个数字是否为质数。
- ruby判断一个数是否为质数(素数)示例
- java判断一个数是否是素数(质数)
- 判断一个正整数是否为质数的算法
- 我开始泡面了——判断一个数是否是质数
- C++如何判断一个数字是否为质数
- 判断一个整数是否为素数(或称为质数)
- 判断一个数是否是质数