题目:求两个数的最大公约数
给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20
解题思路:
最大公约数:两个或多个整数中,公有的因数中最大的一个。
求解最大公因数的方法有:
1.暴力穷举
2.辗转相除法(欧几里得算法)
3.更相减损法
4.Stein算法
本文展示辗转相除法:以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。
例:
2048/766=2余516
766/516=1余250
516/250=2余16
250/16=15余10
16/10=1余6
10/6=1余4
6/4=1余2
4/2=2余0
因此2048和766的最大公约数是2
C语言实现代码如下:
#include<stdio.h>
int main()
{
int a, b, c, t;
scanf("%d %d", &a, &b);
if (a < b)
{
t = a;
a = b;
b = t;
}
while (c = a % b)
{
a = b;
b = c;
}
printf("%d\n", b);//以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数
return 0;
}
运行结果如图: