PHP中获取两个数的所有公因数怎么实现
Admin 2022-08-27 群英技术资讯 345 次浏览
首先我们来了解一下什么是公因(约)数和最大公因(约)数?
因(约)数是指能整除一个整数的数,公因(约)数则是能同时整除几个整数的数。而能同时整除几个整数的 公约数 可以有多个,其中最大的那个就是最大公因数。
例如:数30和40,它们的公因数有1、2、5、10;其中10最大,因此数30和40的最大公因数为10。
那么我们怎么使用PHP来获取两个整数a和b间的公因数和最大公因数呢?
思路:
1、分别获取两个整数a和b间因数(这个在上文PHP循环学习八中有详细介绍),然后将这些因数分别存到一个数组中。这里以数30为例,使用for循环求所有因数:
for($i=1;$i<30;$i++){ if($a%$i==0){//分解因数 $arr1[]=$i; } }
输出这个数组$arr1
var_dump($arr1);
看看结果:
可以看出数30的因数有:1、2、3、5、6、10、15。
利用上述的方法我们再获取数40的所有因数,将它们存到一个数组$arr2中:
可以看出数40的因数有:1、2、4、5、8、10、20。
2、两个整数的所有因数都获取了,就可以使用array_intersect()函数来求它们间的所有公因数了。(array_intersect()函数可以计算两个数组的交集。
$result=array_intersect($arr1,$arr2); var_dump($result);
输出结果为:
这样就可以得出数30和40的所有公因数:1、2、5、10。
3、30和40的所有公因数都在交集数组$result
中,我们就可以使用max()
函数来获取数组中最大的那个数,即最大公因数。
$max=max($result); echo "最大公因数为: $max";
输出结果为:
OK,完成!将上面的代码封装在一个函数里面:
<?php header("Content-type:text/html;charset=utf-8"); function gcd($a,$b){ $arr1=array(); $arr2=array(); for($i=1;$i<$a;$i++){ if($a%$i==0){//分解因数 $arr1[]=$i; } } for($i=1;$i<$b;$i++){ if($b%$i==0){//分解因数 $arr2[]=$i; } } $result=array_intersect($arr1,$arr2); echo "数 $a 和 $b 的公因(约)数有:"; foreach($result as $value){ echo $value." , "; } $max=max($result); echo "<br>最大公因数为: $max <br><br>"; } gcd(30,40); gcd(12,16); ?>
输出结果:
好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
使用注意事项: 1.使用时不能用反射模式创建单例,否则会实例化一个新的对象 ; 2.使用懒单例模式时注意线程安全问题 ;3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)
Laravel 的验证系统有 60多个验证规则可用,但是如果你需要其他的功能怎么办?你可以 轻松创建自己的验证规则, 也可以使用互联网上已有的验证规则。让我们来看看。
nginx和swoole的区别:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Swoole是一个面向生产环境的 PHP 异步网络通信引擎。
这篇文章主要介绍了PHP cookie与session会话基本用法,结合实例形式分析了PHP cookie与session会话基本存储、设置、删除等相关使用方式,需要的朋友可以参考下
在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容,这篇文章主要给大家介绍了关于PHP数组迭代器的使用方法,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008