#include <stdio.h>
int main()
{
int x, y, max, min, b, c;
printf("请输入两个整数:\n");
scanf_s("%d%d", &x, &y);
c = x % y;
b = x * y;
while (c != 0)
{
x = y;
y = c;
c = x % y;
}
max = y;
min = b / max;
printf("最大公约数为:%d\n", max);
printf("最小公倍数为:%d\n", min);
return 0;
}
这是辗转相除法求最大公约的方法,最小公倍数 = 两数积除以它们的最大公倍数。
流程:
⒈ 令r为a/b所得余数(0≤r )
若 r= 0,算法结束;b 即为答案。
⒉ 互换:置 a←b,b←r,并返回第一步。
递归版本:
int gcd(int a, int b)
{
if (a % b==0) return b;
else return gcd(b, a % b);
}