首頁 >後端開發 >php教程 >PHP循環學習九:取得給定兩數間的最大公因數

PHP循環學習九:取得給定兩數間的最大公因數

青灯夜游
青灯夜游原創
2021-08-13 16:58:553774瀏覽

在上一篇文章中《PHP數組學習之返回給定兩數間的全部公因數和最大公因數》,我們中我們介紹了一種獲取兩個整數的全部公因數,求最大公約數的方法。這次我們來再給大家介紹一種求最大公約數的方法,有興趣的朋友可以學習了解一下~

上一篇文章中,我們是將兩個整數的所有因數分別放在兩個數組中,然後使用array_intersect()函數求這兩個數組的交集,就可得到一個包含全部公因數的數組;再使用max()函數計算交集數組中最大數,就取得最大公因數。

是不是有點麻煩,還要先一個個求出所有因數,然後再計算所有公因數,最後才能求出最大公約數。以下介紹一個簡單通用的方法(可以用在其他語言)。

這次我們不使用PHP內建函數,就利用if判斷語句和while迴圈語句來求給定兩個整數間的最大公約數。

實作步驟:有兩個變數a,b

  • #第一步:要確保大數放a中、小數放b。

    這就需要用if語句來判斷,如果a 

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

輸出結果:


PHP循環學習九:取得給定兩數間的最大公因數##好就說到這裡了,有其他想知道的,可以點擊這個哦。 → →

php影片教學

推薦:

PHP面試題大匯總(收藏)

以上是PHP循環學習九:取得給定兩數間的最大公因數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn