此方法主要用到这样一个定理:a和b的公约数==b和a%b的公约数==a%b和b%(a%b)的公约数…………;
另外要知道.a和0的公约数==a;
普通版:
//求最大公约数
function Mgn(num1,num2){
var temp=0;
while(num2!=0){ //当num2==0时,最大公约数为num1
temp=num1%num2;
num1=num2;
num2=temp;
}
return num1;
}
var p=Mgn(0,-15);
var q=Mgn(45,81);
var u=Mgn(-15,3);
console.log(p);//-15
console.log(q);//9
console.log(u);//3
改进版(极简版):
function Mgn(num1,num2){
return num2!=0 ? Mgn(num2,num1%num2) : num1;//整个函数的实现只需要一行代码
}
var p=Mgn(0,-15);
var q=Mgn(45,81);
var u=Mgn(-15,3);
console.log(p);//-15
console.log(q);//9
console.log(u);//3
本文介绍了一种使用辗转相除法求解两个整数最大公约数的算法,并提供了两种实现方式:一种是通过循环逐步求解,另一种是使用递归简化代码。
1003

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



