最大公约数和最小公倍数的解决方案

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。例如24、60,他们的最大公约数就是12.
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。例如24、60,他们的最小公倍数是120。

最大公约数的解决方案可以使用欧几里得算法。
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
最小公倍数可以用两个数相乘然后除以最大公约数。(a*b/最大公约数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//——————————————————————————————
//判断两个数的最大公约数和最小公倍数
#include <stdio.h>

int gcomfac(int m,int n);//最大公约数
int lcommult(int m, int n, int x);//最小公倍数
int main() {
int m, n, gfac, lcm;
printf("请输入两个数:");
scanf("%d %d",&m,&n);
gfac = gcomfac(m,n);
lcm = lcommult(m,n,gfac);
printf("最大公约数:%d\n最小公倍数:%d\n",gfac,lcm);

}

int gcomfac(int m, int n) {
int result;
if (m / n == 0)
result = gcomfac(n, m);
else if (m%n == 0)
result = n;
else if (m%n != 0)
result = gcomfac(n, m%n);
return result;
}

int lcommult(int m, int n, int x) {
int lcm;
lcm = (m*n) / x;
return lcm;
}
------ 本文结束 ------
0%