判断素数的快速算法 sqrt()
Posted 再吃一个橘子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断素数的快速算法 sqrt()相关的知识,希望对你有一定的参考价值。
我们在日常判断素数的程序中常用到如下代码
//判断数num是不是素数
for(i=2;i<num;i++){
if(num%i==0)
return 0;
return 1;
}
这样写无疑是没有问题的,但是我们实际做题可能会有算法时间复杂度的要求,或者说数据大的时候我们会等很久,算法效率低,那么有没有一种好的算法可以更快地判断是不是素数呢?
当然了,先附上代码段
//判断数num是不是素数
for(i=2;i<=sqrt(num);i++){
if(num%i==0)
return 0;
return 1;
}
sqrt()函数是用来判断开根号的,那么我们这样用是为何呢?
比如想判断20是不是素数,我们都知道素数是除了1和数本身没有其他公约数的数,我们看,20可以分成如下公因子:
如果我们用老办法i=2到20一个一个判断是可以,但是没有必要
因为,我们可以使用sqrt来判断
//判断数20是不是素数
for(i=2;i<=sqrt(20);i++){
if(num%i==0)
return 0;
return 1;
}
我们看到sqrt(20)的值是4.47...
其实我们只需要判断前半段就行,因为有2肯定有10,有4肯定有5
以上是关于判断素数的快速算法 sqrt()的主要内容,如果未能解决你的问题,请参考以下文章
代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。