十年长安得一第,何须空腹用高心。
——李绅 《答章孝标》
今天再刷课的时候,看到了辗转相除法这个概念,然后就一直很迷糊,在找了一些资料过后,自己大致地了解了这个概念,下面是一些自己的见解,希望可以帮助也处于疑惑之中的你们。
下面是一些从百度找的一些资料,大家可以先看一下👇👇👇
欧几里得算法又称辗转相除法,是指用于计算两个非负整数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的例子。👇👇👇
对于这个算法就讲到此了,感谢各位的阅读,我们一起继续努力!!!