概述
在之前的文章《PHP数组学习之更改键/值的大写或小写》中,我们介绍了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()函数可以计算两个数组的交集,不懂可以阅读《PHP数组学习之如何比较两个数组求交集》)。
$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视频教程
最后给大家推荐一个PHP数组的免费视频教程:PHP函数之array数组函数视频讲解,快来学习吧!
以上就是PHP数组学习之返回给定两数间的全部公因数和最大公因数的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是苹果音响为你收集整理的PHP数组学习之返回给定两数间的全部公因数和最大公因数的全部内容,希望文章能够帮你解决PHP数组学习之返回给定两数间的全部公因数和最大公因数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复