判断是否为质数的算法
上海传智播客
崔长春老师
先说一下什么是质数:除了
1和它本身以外不再有其他因数的数称为质数。
利用程序求质数有很多理论和成熟算法,从简单的到复杂的大约有
10种以上的解法,今天我们就讲解一个简单但是效率很高的算法:平方根算法。
平方根算法涉及到如下理论:
假如一个数
c能分解为
a*b
,即
c=a*b
,那么
a
和
b
一定是一个小于等于
c
的平方根,一个大于等于
c
的平方根,因此我们只需要查找到
c
的平方根即可,如果找不到,这个数就不能分解,他就是质数。具体程序实现如下:
function getPrime($num){
if($num==2){
echo "2
是质数
";
}
$tmp=sqrt($num);
//
首先假定他是质数
$flag=true;
for($i=2;$i<=$tmp;$i++){
if($num%$i==0){
//
能进来,说明不是质数,将变量
$flag
置为
false
$flag=false;
break;
}
}
//
通过判断
$flag
来判断是否为质数
if($flag){
echo $num."
是质数
";
}else{
echo $num."
不是质数
";
}
}
getPrime(17);//17
是质数
getPrime(27);//27
不是质数