上一篇文章中,我们是将两个整数的所有因数分别放在两个数组中,然后使用array_intersect()函数求这两个数组的交集,就可得到一个包含全部公因数的数组;再使用max()函数计算交集数组中最大数,就获取最大公因数。
是不是有点麻烦,还要先一个个求出所有因数,然后计算出所有公因数,最后才能求出最大公约数。下面介绍一个简单通用的方法(可以用在其他语言中)。
这次我们不使用PHP内置函数,就利用if判断语句和while循环语句来求给定两个整数间的最大公约数。
实现步骤:有两个变量a,b
第一步:要确保大数放a中、小数放b中。
这就需要使用if语句来判断,如果 a < b,就定义一个中间变量temp,实现 a与b值的交换
if ($a < $b) { //a < b,则交换两个数 $temp = $a; $a = $b; $b = $temp;}
第二步:求 a/b
的余数,值赋给 r
$r = $a % $b;
第三步:判断 余数r 是否为0。
如果 r=0
,则上面的b就是最大公约数;如果 r!=0
,就需要把b的值赋给a,r的值赋给b,继续求 a/b 的余数,判断 余数r 是否为0。这就需要利用到循环(这里使用while循环):
while ($r != 0) { $a = $b; $b = $r; $r = $a % $b; }
第四步:就是输出最大公因数b。
下面看看实现代码:
<?PHPheader("Content-type:text/HTML;charset=utf-8");function gcd($a, $b) { $a1 = $a; $b1 = $b; if ($a < $b)//a < b,则交换两个数 { $temp = $a; $a = $b; $b = $temp; } $r = $a % $b; while ($r != 0) { $a = $b; $b = $r; $r = $a % $b; } echo "数$a1 和$b1 的最大公因数为: $b <br><br>";}gcd(30, 40);gcd(12, 16);gcd(15, 12);?>
输出结果:
好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程
推荐:《PHP面试题大汇总(收藏)》 总结
以上是内存溢出为你收集整理的PHP循环学习九:获取给定两数间的最大公因数全部内容,希望文章能够帮你解决PHP循环学习九:获取给定两数间的最大公因数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)