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


Posted in PHP onAugust 01, 2018

本文实例讲述了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) || $num<0){
    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.3water.com/jisuanqi/factor_calc

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

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

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

PHP 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
给ECShop添加最新评论
Jan 07 PHP
PHP连接access数据库
Mar 27 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
php 中奖概率算法实现代码
Jan 25 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 #PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 #PHP
PHP实现随机数字、字母的验证码功能
Aug 01 #PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 #PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 #PHP
PHP常用日期加减计算方法实例小结
Jul 31 #PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 #PHP
You might like
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
B2K与车机的中波PK
2021/03/02 无线电
php实现快速排序的三种方法分享
2014/03/12 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Python输出指定字符串的方法
2020/02/06 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python
Java获取字符串编码格式实现思路
2022/09/23 Java/Android
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS