算法介绍:
欧几里德算法是用来求两个正整数最大公约数的算法。也叫辗转相除法,是由古希腊数学家欧几里德在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里德算法。
算法实现:
我们假设有两个数,分别设a=1997,b=615,我们很容易知道a和b的最大公约数为1,那么欧几里得算法求解的具体过程则为:
1997/615=3(余152)
615/152=4(余7)
152/7=21(余5)
7/5=1(余2)
5/2=2(余1)
2/1=2(余0)
在以上算法中,我们将a,b中最大的数作为除数,然后除以另一个数得到余数152,由于欧几里得算法的终止条件为余数为0,因此我们在这里将继续使用先前的被除数615作为新的除数,将上一轮计算的余数作为新的被除数,得到新的余数7,如此反复下去,直到余数为0,取最后一次计算的被除数即为a,b的最大公约数,因此1997和615的最大公约数为1.
我们使用编程语言c语言来实现上述算法:
#include<stdio.h>
int gcd(int a,int b){
//该while循环的终止条件为b=0,因为b会继承上一次的余数值
while (b != 0) {
//计算余数,mod为取余的结果
int mod = m % n;
//将上一轮的被除数b作为新的除数
a = b;
//将上一轮的余数作为除数
b=mod;
}
return a;
}
int main(){
int c=gcd(1997,615);
printf("%d",c);
return 0;
}