最大公约数和最小公倍数

最大公约数

      数学上求最大公约数一般有两种方法,辗转相除法和更向相减法:
      首先来普及一下这两种数学上的方法,对接下来的算法很有帮助。辗转相除法,顾名思义,就是用除法来做的,不过这里用的是%(取余),我们假设有两个数是有最大公约数的,记为M,而这两个数就记为aM和bM,如果a>b,那么在使用辗转相除法后,所得结果便是(a-b)M,随着辗转相除,a-b最终会是1,那么便可求得M的值;同样的方法,更向相减法也是这样。
      那么接下来就看一下这两种方法的效果吧:
int find_max(int x, int y)
{
	while (x*y){
		if (x > y){
			x %= y;
		}
		else{
			y %= x;
		}
	}

	return x > y ? x : y;
}
 

while (1){
	if (x > y){
		x = x - y;
	}
	else if (y > x){
		y = y - x;
	}
	else{// x == y
		return x;
	}
}

最小公倍数

      最小公倍数的运算还是得经过最大公约数,如果有俩个数x,y,而且其最大公约数为M,那么起最小公倍数的运算法则是,x*y/M。
只需调用上面写的函数,最后返回x*y/M就行了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值