求一个数的最大公约数和最小公倍数:一般算法是采供for循环,单数for循环效率太低,所以我把两种都贴出来,备忘:
这是html部分:
<html> <head> <meta charset="utf-8" /> <title>求最大公约数和最小公倍数</title> </head> <body> <form action="" method="post" > <input type="text" name="num1" size="3"/>和 <input type="text" name="num2" size="3"/> <input type="submit" value="计算" /> </form> </body> </html>
这是方法1:
function maxgongyueshu($array) {
    if ($array[0]<$array[1]) {
        $arr=array();
        for ($i = 1; $i <=$array[1]; $i++) {
            if ($array[0]%$i==0&&$array[1]%$i==0){
                array_push($arr, $i);
            }
        }
        return $arr[count($arr)-1];
    }else if($array[0]>$array[1]){
        $arr=array();
        for ($i = 1; $i <=$array[1]; $i++) {
            if ($array[0]%$i==0&&$array[1]%$i==0){
                array_push($arr, $i);
            }
        }
        return $arr[count($arr)-1];
    }else {
        return $array[1];
    }
}
function mingongbeishu($array) {
    if ($array[0]>$array[1]) {
        for ($i = $array[0]; $i>=$array[1]; $i++) {
            if ($i%$array[0]==0&&$i%$array[1]==0) {
                return $i;
            }
        }
    }else if ($array[0]<$array[1]) {
        for ($i = $array[1]; $i>=$array[0]; $i++) {
            if ($i%$array[1]==0&&$i%$array[0]==0) {
                return $i;
            }
        }
    }else {
        return $array[0];
    }
        
}
if (!empty($_POST['num1'])&&!empty($_POST['num2'])) {
    $num1=$_POST['num1'];
    $num2=$_POST['num2'];
    $array=array($num1,$num2);
    echo "最大公约数是".maxgongyueshu($array);
    echo "最小公倍数是".mingongbeishu($array);
}这是方法二:
<?php
//header("Content-type: text/html; charset=utf-8");
function maxgongyueshu($num1, $num2) {
    $temp=0;
    while ($num2 != 0) {
        $temp = $num1 % $num2;
        $num1 = $num2;
        $num2 = $temp;
    }
    return $num1;
}
function mingongbeishu($num1, $num2) {
    $gys = maxgongyueshu($num1,$num2);
    $gbs = ($num1 * $num2) / $gys;
    return $gbs;
}
echo "最大公约数为:".maxgongyueshu(8645640, 100165465);
echo "<br />";
echo"最小公倍数为:". mingongbeishu(8645640, 100165465);
?>第二种方法才用的是欧几里得算法,效率极高.