A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 上海分校-小影 于 2018-8-17 12:06 编辑

判断是否为质数的算法
                                              上海传智播客  崔长春老师
先说一下什么是质数:除了1和它本身以外不再有其他因数的数称为质数。
利用程序求质数有很多理论和成熟算法,从简单的到复杂的大约有10种以上的解法,今天我们就讲解一个简单但是效率很高的算法:平方根算法。
平方根算法涉及到如下理论:
假如一个数c能分解为a*b,即c=a*b,那么ab一定是一个小于等于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不是质数


1 个回复

倒序浏览

很不错,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马