<?php
header('Content-Type:text/html;charset=utf-8');
//获取表单所传数字,如果没有则生成1-10000之间的随机数为初始值
$num1 = isset($_POST['num1']) ? $_POST['num1'] - 0 : mt_rand(1, 10000);
$num2 = isset($_POST['num2']) ? $_POST['num2'] - 0 : mt_rand(1, 10000);
if ($num1 * $num2) {//判断数据除数或者被除数是否有0的情况
//判断两个数的大小,如果除数大于被除数,则更换两者之间的位置
if ($num1 > $num2) {
$m = $num1;
$n = $num2;
} else {
$m = $num2;
$n = $num1;
}
} else {
$m = '数据输入错误';
}
do {
$r = $m % $n; //定义两个数之间所求余数
//余数不为0,则继续使用小的数来除以余数求余
$m = $n;
$n = $r;
} while ($r); //如果余数不为0,则继续进行循环
?>
<!--表单提交项-->
<form method="post" action="max.php">
数字一:<input type="text" name="num1" value="<?php echo $num1; ?>"/><br/><br/>
数字二:<input type="text" name="num2" value="<?php echo $num2; ?>"/><br/><br/>
<input type="submit" value="生成最大公约数"/>
<input type="text" readonly="readonly" value="<?php echo $m; ?>"/>
</form>
header('Content-Type:text/html;charset=utf-8');
//获取表单所传数字,如果没有则生成1-10000之间的随机数为初始值
$num1 = isset($_POST['num1']) ? $_POST['num1'] - 0 : mt_rand(1, 10000);
$num2 = isset($_POST['num2']) ? $_POST['num2'] - 0 : mt_rand(1, 10000);
if ($num1 * $num2) {//判断数据除数或者被除数是否有0的情况
//判断两个数的大小,如果除数大于被除数,则更换两者之间的位置
if ($num1 > $num2) {
$m = $num1;
$n = $num2;
} else {
$m = $num2;
$n = $num1;
}
} else {
$m = '数据输入错误';
}
do {
$r = $m % $n; //定义两个数之间所求余数
//余数不为0,则继续使用小的数来除以余数求余
$m = $n;
$n = $r;
} while ($r); //如果余数不为0,则继续进行循环
?>
<!--表单提交项-->
<form method="post" action="max.php">
数字一:<input type="text" name="num1" value="<?php echo $num1; ?>"/><br/><br/>
数字二:<input type="text" name="num2" value="<?php echo $num2; ?>"/><br/><br/>
<input type="submit" value="生成最大公约数"/>
<input type="text" readonly="readonly" value="<?php echo $m; ?>"/>
</form>

该博客介绍了一种使用PHP实现辗转相除法(欧几里得算法)求解两个数的最大公约数的方法。首先,通过检查表单输入或生成随机数设置初始值,然后确保除数和被除数不为0。接着,不断用较大数除以较小数并取余,直到余数为0,此时较小数即为最大公约数。最后,通过表单提交可以动态计算并显示最大公约数。
1910

被折叠的 条评论
为什么被折叠?



