PHP中获取两个数的所有公因数怎么实现
Admin 2022-08-27 群英技术资讯 1155 次浏览
本篇内容介绍了“PHP中获取两个数的所有公因数怎么实现”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先我们来了解一下什么是公因(约)数和最大公因(约)数?
因(约)数是指能整除一个整数的数,公因(约)数则是能同时整除几个整数的数。而能同时整除几个整数的 公约数 可以有多个,其中最大的那个就是最大公因数。
例如:数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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了PHP常见字符串操作函数与用法,结合实例形式总结分析了php针对字符串的格式化、分割、连接、比较等相关操作技巧,需要的朋友可以参考下
PHP扩展是编译库,它允许在您的PHP代码中使用特定的功能。今天我们就来给大家介绍一下php创建一个扩展的方式,有需要的小伙伴可以参考参考。
在laravel中,chunk()方法用于将集合分割为多个指定大小的较小集合,语法为“$指定集合->chunk(指定数量);”;该方法会对各个用户数据进行更新后再查看各个用户数据,这样在查询数据时没有获取大量数据,能够减轻系统的压力。
sleep()是PHP的内置函数。用来延迟给定的秒数来执行程序。该函数只接受一个参数,必须传输该参数。$seconds参数表示以秒为单位的延迟时间。
文件上传:if($_FILES&&$_FILES['attachment']&&$_FILES['attachment']['tmp_name']){$filesize=$_FILES['attachment']['size'];//文件上传大小限制:5M...
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008