此方法主要用到这样一个定理: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