温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP中怎么返回给定两数间的全部公因数和最大公因数

发布时间:2021-08-13 17:26:18 来源:亿速云 阅读:127 作者:Leah 栏目:编程语言

PHP中怎么返回给定两数间的全部公因数和最大公因数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1、分别获取两个整数a和b间因数(这个在上文PHP循环学习八中有详细介绍),然后将这些因数分别存到一个数组中。这里以数30为例,使用for循环求所有因数:

for($i=1;$i<30;$i++){
    if($a%$i==0){//分解因数
        $arr1[]=$i;
    }
}

输出这个数组$arr1

var_dump($arr1);

看看结果:

PHP中怎么返回给定两数间的全部公因数和最大公因数

可以看出数30的因数有:1、2、3、5、6、10、15。

利用上述的方法我们再获取数40的所有因数,将它们存到一个数组$arr2中:

PHP中怎么返回给定两数间的全部公因数和最大公因数

可以看出数40的因数有:1、2、4、5、8、10、20。

2、两个整数的所有因数都获取了,就可以使用array_intersect()函数来求它们间的所有公因数了。(array_intersect()函数可以计算两个数组的交集,不懂可以阅读《PHP数组学习之如何比较两个数组求交集》)。

$result=array_intersect($arr1,$arr2);
var_dump($result);

输出结果为:

PHP中怎么返回给定两数间的全部公因数和最大公因数

这样就可以得出数30和40的所有公因数:1、2、5、10。

3、30和40的所有公因数都在交集数组$result中,我们就可以使用max()函数来获取数组中最大的那个数,即最大公因数。

$max=max($result);
echo "最大公因数为: $max";

输出结果为:

PHP中怎么返回给定两数间的全部公因数和最大公因数

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中怎么返回给定两数间的全部公因数和最大公因数

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI