只用一行代码求出最大公约数js版

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值