本帖最后由 上海分校-小影 于 2018-8-17 12:06 编辑
判断是否为质数的算法 上海传智播客 崔长春老师 先说一下什么是质数:除了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不是质数
|