• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现的分解质因数操作示例

    本文实例讲述了PHP实现的分解质因数操作。分享给大家供大家参考,具体如下:

    思路:

    如果要计算$num的质数,则至少收集$num以内的质数数组,判断$num是否在质数数组里:

    如果否,则判断当前质数$zhishu[$i]是否能再次将整除后的数整除,如果能,则质数数组“游标”不移动(还让当前质数$zhishu[$i]对被整除后的数取模)

    如果不能(再次将整除后的数整除),则用下一个质数(让$i++)去测试是否整除。如果否($num在质数数组里),则表示$num本身就是个质数,直接echo之。(思路看得糊涂的话,直接看代码吧)

    首先:用一个函数收集一定范围内的质数放到数组里返回。(把1从质数里剔除,从2开始算质数),代码和注释如下:

    //得到1000以内的质数
    function get_zhishu($num=1000){
      $num = floor($num);
      $zhishu = array();
      //先得到1000以内的质数
      for($i=1; $i=$num; $i++){
        $flag = true; //当flag为false时表示该数不是素数
        for($j=2; $j$num; $j++){ //$j从2开始,因为除数为1时,肯定能整除
          if($i>$j){ //$j如果比$i还大,取模肯定不为0,没有比较的意义
            $mod = $i%$j;
            if($mod == 0 ){ //当除数$j为$i以内时,如果取模为0,表示该数不是素数
              $flag = false;
            }
          }
        }
        if($flag){
          array_push($zhishu, $i);//如果$flag为真,则$i是质数
        }
      }
      array_shift($zhishu); //把1从质数数组中剔除
      return $zhishu;
    }
    $zhishu = get_zhishu(1000); //得到1到1000之内的质数
    
    

    然后:从质数数组中,挨个取出(从最小的质数开始)符合条件(能被整除)的质数。代码和注释如下:

    /**
     * @param int $num 要分解的质数
     * @param array $zhishu 1000以内的质数数组
     * @param int $i 相当于质数数组的"游标"
     * @author misaka去年夏天
     */
    function fenjie_num($num, $zhishu, $i=0){
      if(!is_int($num) || $num0){
        exit('请输入正整数!');
      }
      if(in_array($num, $zhishu)){ //如果该数为质数,则echo之
        echo $num,'br />';
      }else{
        $ceil = ceil($num/$zhishu[$i]);
        if($ceil == ($num/$zhishu[$i])){
          echo $zhishu[$i],'br />';
          if($ceil%$zhishu[$i]!=0){
            //如果当前质数还能被$ceil整除,则继续用该质数(不用$i++),比如90分解为2、3、3、5,否则让$i++再递归
            $i++;
          }
          fenjie_num((int)$ceil, $zhishu, $i);
        }else{
          fenjie_num($num, $zhishu, $i+1); //对于99这样的,不是质数,但也没第一次被整除的,用下一个质数($i++)测试它
        }
      }
    }
    fenjie_num(390, $zhishu);
    
    

    运行结果:

    2
    3
    5
    13

    PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

    在线分解质因数计算器工具:
    http://tools.jb51.net/jisuanqi/factor_calc

    在线一元函数(方程)求解计算工具:
    http://tools.jb51.net/jisuanqi/equ_jisuanqi

    科学计算器在线使用_高级计算器在线计算:
    http://tools.jb51.net/jisuanqi/jsqkexue

    在线计算器_标准计算器:
    http://tools.jb51.net/jisuanqi/jsq

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP计算个人所得税示例【不使用速算扣除数】
    • PHP实现的简单四则运算计算器功能示例
    • PHP基于堆栈实现的高级计算器功能示例
    • PHP数据分析引擎计算余弦相似度算法示例
    • PHP实现的简单在线计算器功能示例
    • php编程实现简单的网页版计算器功能示例
    • PHP房贷计算器实例代码,等额本息,等额本金
    • PHP中浮点数计算比较及取整不准确的解决方法
    • PHP精确计算功能示例
    • PHP中使用微秒计算脚本执行时间例子
    上一篇:Laravel中为什么不使用blpop取队列详析
    下一篇:PHP实现数组根据某个单元字段排序操作示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP实现的分解质因数操作示例 PHP,实现,的,分解,质因数,