<script>
// 封装一个函数玩玩
function inputTwoNum(){
var x=prompt("输入两个数字用/隔开"),
// var aa = new Array();
y = x.split("/");//将输入框中的两个数转换成数组;
// aa[0] = y[0],
// aa[1] = y[1];
return y;
}
function gys(a,b){
while(Math.abs(a-b)){
t = b;
b = Math.abs(a-b);
a = t;
}
return b;
}
var x = inputTwoNum();
var a = Number(x[0]),
b = Number(x[1]);
document.write(a+"跟"+b+"最大公约数是:"+gys(a,b));
第一种:for循环比较两个数因素相等的最大值
var x=prompt("输入两个数字用/隔开");
var y = x.split("/"),
a = y[0],
b = y[1];
if(a>b){//两个数的公约数不可能大于其中任何一个数,所以从较小的数字循环比较的,加快效率
t=a;
a=b;
b=t;
}
for(i=a;i>0;i--){//因为是最大公约数,所以从大到小计算
if(a%i==0){//a的约数
if(b%i==0){//a的约数=b的约数
document.write(a+"跟"+b+"的最大公约数是:"+i);
break;
}
}
}
第二种 while循环,取余结果为零时,被取余的那个数即为最大公约数(数学逻辑)
function gys(a,b){
var x=a%b;
while(x){
a=b;b=x;x=a%b;
}
return b;
}
var x=prompt("输入两个数字用/隔开");
var y = x.split("/"),
a = y[0],
b = y[1];
document.write(a+"跟"+b+"的最大公约数是:"+gys(a,b));
第三种 while循环,更相减损法
function gys(a,b){
while(Math.abs(a-b)){
t = b;
b = Math.abs(a-b);
a = t;
}
return b;
}
var x=prompt("输入两个数字用/隔开");
var y = x.split("/"),
a = y[0],
b = y[1];
document.write(a+"跟"+b+"最大公约数是:"+gys(a,b));
第四种:递归实现
function gys(a,b){
var x=a%b;
if(x==0){
return b;
}
a = b;
b = x;
x = a%b;
return gys(a,b);
}
var x=prompt("输入两个数字用/隔开");
var y = x.split("/"),
a = y[0],
b = y[1];
document.write(a+"跟"+b+"的最大公约数是:"+gys(a,b));
</script>