【知识学习】最大公因数gcd

本文介绍了求解最大公因数(gcd)的两种主要算法:更相减损法(中国传统的算法)与辗转相除法(欧几里得算法)。通过简单的数学证明和代码实现,帮助读者理解这两种算法的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最大公因数,又叫gcd/最大公约数。

解决的两大算法:更相减损 辗转相除

以下附简单证明

更相减损

记住:这是我们中国人的算法!

用大数减小数的差和小数的最大公约数与原来两个数的最大公约数相等

证明:
在这里插入图片描述

代码实现

int gcd(int x , int y) {
	if(x==y) return x;
	if(x<y)
		return gcd(y-x , x);
	return gcd(x-y , y);
}

辗转相除

又叫欧几里得算法

证明:
在这里插入图片描述
稍微解释一下上面的证明(证明来自百度百科)

从上到下看下来应该也就是倒数第四行的结论可能有问题吧,其实可以知道mmmnnn是互质的(因为如果不互质,则第一行假设不成立),所以y%x一定不等于零,所以y+kxy+kxy+kx一定与xxx互质,那么就有倒数第四行的“可得”了。

代码实现:

int gcd(int x , int y) {
	return y==0?x:gcd(y,x%y);
}

忘记好多知识点了,第一遍学的时候也不仔细也没搞懂原理

希望大家这一遍看过就真的搞懂这个算法,手推一下证明过程哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cls1277

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值