在之前的文章《PHP循环学习八中有详细介绍),然后将这些因数分别存到一个数组中。这里以数30为例,使用for循环求所有因数:

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

输出这个数组$arr1

var_dump($arr1);

看看结果:

1.png

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

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

2.png

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

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

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

输出结果为:

3.png

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

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

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

输出结果为:

4.png

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);
?>

输出结果:

5.png

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →PHP函数之array数组函数视频讲解,快来学习吧!

以上就是PHP数组学习之返回给定两数间的全部公因数和最大公因数的详细内容,更多请关注亿码酷站其它相关文章!


PHP数组学习之返回给定两数间的全部公因数和最大公因数
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!