目录

最大公约数和最小公倍数的定义

方法一:简单暴力直接法

方法二:辗转相除法(最大公约数)


最大公约数和最小公倍数的定义

最小公倍数是指两个或多个数的公共倍数中最小的一个数。

最大公约数则是指两个或多个数的公共因数中最大的一个数。

例如,对于数3和5,它们的最小公倍数是15,最大公约数是1。

X和Y的最大公约数和最小公倍数的关系:最小公倍数=( X * Y )/ 最大公约数

方法一:简单暴力直接法

通过定义,可以知道:

最大公约数一定不会大于两个数之间的最小数,最大也就是两个数的最小值;最小公倍数一定大于或等于两个数的最大值。

所以,就有了简单暴力直接法的产生:

求最大公约数是把最小值赋给变量j,然后两个数再对变量j取余,判断是否能整除,不能整除变量tj就自减1,直到整除为止。
求最小公倍数是把最大值赋给变量i,然后变量i再分别对两个数取余,判断是否能整除,不能整除变量i就自加1,直到整除为止。

代码:

#define _CRT_SECURE_NO_WARNINGS 1//在VS2019中使用scanf函数需要添加#includeint main(){int a, b, i, j;int max = 0;printf("请输入两个整数:\n");scanf("%d%d", &a, &b);for (i = a;;i++){if (i % a == 0 && i % b == 0)//求最小公倍数break; //利用i++,第一个i对a和b同时取余为零的数i即为最大公约数}for (j = b;;j--){if (a % j == 0 && b % j == 0)//求最大公约数break;//利用j--,第一个a和b同时除尽的数j即为最大公约数}printf("最大公约数:%d\n最小公倍数:%d\n", j, i);return 0;}

测试结果:

方法二:辗转相除法(最大公约数)

数学原理:

X和Y的最大公约数和最小公倍数的关系:最小公倍数=( X * Y )/ 最大公约数

代码:

int main(){int x, y, a, b, temp, r = 0, min = 0;printf("请输入两个整数:\n");scanf("%d%d", &x, &y);if (x < y)//交换大小顺序,大数对小数取余{temp = x;x = y;y = temp;}a = x;b = y;r = a % b;while (r != 0) //辗转相除求最大公因数,b即为最后的最大公因数{a = b;b = r;r = a % b;}min =( x * y) / b; //最小公倍数printf("最大公因数:%d\n最小公倍数:%d\n", b, min);return 0;}

测试结果