我是靠谱客的博主 英勇母鸡,最近开发中收集的这篇文章主要介绍PHP循环学习九:获取给定两数间的最大公因数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在上一篇文章中《PHP数组学习之返回给定两数间的全部公因数和最大公因数》,我们中我们介绍了一种获取两个整数的全部公因数,求最大公约数的方法。这次我们来再给大家介绍一种求最大公约数的方法,感兴趣的朋友可以学习了解一下~

上一篇文章中,我们是将两个整数的所有因数分别放在两个数组中,然后使用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。

下面看看实现代码:

<?php
header("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);
?>
登录后复制

输出结果:

1.png

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

推荐:《PHP面试题大汇总(收藏)》

以上就是PHP循环学习九:获取给定两数间的最大公因数的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是英勇母鸡为你收集整理的PHP循环学习九:获取给定两数间的最大公因数的全部内容,希望文章能够帮你解决PHP循环学习九:获取给定两数间的最大公因数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部