1.辗转相除法
<body>
<?php
//辗转相除法就是除数和余数反复做除法运算,当余数为0时,取得除数为最大公约数
$a=18;$b=12;
while($b!=0){
$temp=$a;
$a=$b;
$b=$temp%$b;
}
echo $a;
?>
2.递归函数
<?php
function zdgys($a,$b){
if($b==0){//如果除数为0,最大公因数仍为被除数,这叫欧几里得定理
return $a;
}
else{
return zdgys($b,$a%$b);//其中$a%$b就是他们的余数,把 除数赋值给说原来的被除数,余数赋值给原来的除数
}
}
echo zdgys(15,5);
结果:
3.直接设最大公因数
<?php
function zdgys($a,$b){
if($b==0){
return $a;
}
else{
for($i=$b;$i>=1;$i--)//设i为最大公因数
{
if($a%$i==0&&$b%$i==0){//$i是除数,不能为0
return $i;
echo $i;
}
}
}
}
echo zdgys(15,0);
?>
结果: