辗转相除法

十年长安得一第,何须空腹用高心。

——李绅 《答章孝标》


今天再刷课的时候,看到了辗转相除法这个概念,然后就一直很迷糊,在找了一些资料过后,自己大致地了解了这个概念,下面是一些自己的见解,希望可以帮助也处于疑惑之中的你们。

下面是一些从百度找的一些资料,大家可以先看一下👇👇👇

欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式为gcd(a,b)=gcd(b,a,mod b)。

欧几里得算法和扩展欧几里得算法可使用多种编程语言实现。

上述的这个反正我是看着挺迷糊的,所以我又在csdn上看了一些文章,才清晰了许多,下面就为大家说说我自己的见解。

首先我们可以设m和n两个数值,且取m是大于n,那么当m%n等于0时,就很容易的,n为最大公约数;当m%n不等于0时,我们可以采用分块的思想进行,所分出的最大的公有的就是m和n的最大公约数。假如m=75,n=50,很明显,m%n并不等于0,n此时并不是m和n的最大公约数,所以下面我们就对此进行分块。得到:75=50+25,也就变成了50+25 与 50的比较。继续,我们在50当中找50当中能不能分出合适的块,继而我们得到 25+25+25 与  25+25,所有的块都变成了25,理所当然,25便是75与50的最大公约数了。

其实,我们大抵记住这个代码就行,根据代码来理解更为容易,下面是判断俩个数的最大公约数的代码,感兴趣的可以自己推推看,下面会展示一个示例。

#include <stdio.h>
int main(){
	int m=0;
	int n=0;
	int r=0;
	scanf("%d %d",&m,&n);
	
	while(m%n){
		r=m%n;
		m=n;
		n=r; 
	}
	printf("%d ",n);
	
	return 0;
}

下面举一个m=25,n=18的例子。👇👇👇

 

对于这个算法就讲到此了,感谢各位的阅读,我们一起继续努力!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值