<?php
/* 写2个函数,分别可以求得两个正整数的最大公约数和最小公倍数。
提示:
最大公约数就是能够同时整除该两个数的最大的那个。比如24和36的最大公约数是12
最小公倍数就是能够同时被该两个数整除的最小的那个。比如24和36的最小公倍数是72
*/
//第一种方法求最大公约数
function gongyueshu($number1,$number2){
$minNum=$number1<$number2?$number1:$number2;
for($i=1;$i<=$minNum;$i++){ //第一种方法是利用从小到大的数能否被两个数整除
if($number1%$i == 0 && $number2%$i == 0){
$minResult=$i;
}
}
return $minResult;
}
echo "最大公约数是:".gongyueshu(24,36);
echo "<hr/>";
//第二种方法求最大公约数
function gongyueshu2($number1,$number2){
$minNum=$number1<$number2?$number1:$number2;
for($i=$minNum;$i>=1;$i--){ //第二种方法利用从两数中最小的那个数开始,依次递减的顺序
if($number1%$i == 0 && $number2%$i == 0){ //判断两个数能否同时被整除
$minResult=$i;
}
}
return $minResult;
}
echo "最大公约数是:".gongyueshu(24,48);
echo "<hr/>";
//第一种方法求最小公倍数
function gongbeishu($number1,$number2){
$maxNum=$number1>$number2?$number1:$number2; //判断两数中的最大的那个数
for($i=$maxNum;$i>0;$i+=$maxNum){//依次进行$i+=$maxNum运算,这里是一个死循环,但肯定能找到并跳出
if($i%$number1==0 && $i%$number2==0){ //找到的第一个这就是最小公倍数
return $i;
}
}
}
echo "两个数的最大公倍数为:".gongbeishu(36,48);
echo "<hr/>";
//第二种方法求最小公倍数
//思路:由于求得最大公倍数,有数学运算:两个数的乘积=最大公倍数*最小公约数
function gongbeishu2($number1,$number2){
return $number1*$number2/gongyueshu($number1,$number2);
}
echo "两个数的最大公倍数为:".gongbeishu(36,48);
?>