#定义:
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
辗转相除法:辗转相除法,又称欧几里得算法(Euclidean algorithm),是求取最大公约数的一种算法。辗转相除法首次出现于欧几里得的《几何原本》中的第Ⅶ卷,书中的命题ⅰ和命题ⅱ所描述的就是辗转相除法,而在中国,辗转相除法最早出现在《九章算法》中。
核心原理:两个数的最大公约数等于其中较小的数字和二者之间余数的最大公约数
#举例:
这里我们用一个例子来帮助我们理解:
我们给定两个数字: a=27 b=48 c=a%b (% 取模符号)
-
int a=27 int b=48 c=a%b=27%48=( 0...27)
-
int a=48 int b=27 c=a%b=48%27=(1...21)
-
int a=27 int b=21 c=a%b=27%21=(1...6)
-
int a=21 int b=6 c=a%b=21%6=(3...3)
-
int a=6 == int b=3== c=a%b=6%3=(2...0)
依次赋值:把第一的b给 到第二次的a,把第一次取模的值(C的值)给到第二次的b.
依次循环知道,取模为0结束。其中最大公约数=b=3(最后一次b的值)
#代码展示`
用一个while循环,当a%b的值为0时跳出while循环
int main()
{
int a = 0;
int b = 0;
int tmp = 0;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
while (tmp=a % b)//当a%b的值为0时跳出while循环
{
tmp = a % b;
a = b;
b = tmp;
}
printf("两个数的最大公约数为:%d",b);
return 0;
}