在上一篇文章中《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,則上面的b就是最大公約數;如果
r!=0,就需要把b的值賦給a,r的值賦給b,繼續求 a/b 的餘數,判斷餘數r 是否為0。這就需要利用到迴圈(這裡使用while迴圈):
while ($r != 0) { $a = $b; $b = $r; $r = $a % $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中文網其他相關文章!