输入两个正整数m和n,求最大公约数和最小公倍数
最大公约数: 两个或多个整数共有约数中最大的一个,求最大公约数:质因数分解法、短除法、辗转相除法、更相减损法
最小公倍数: 两个或多个整数公有的倍数叫做它们的公倍数,其中最小的数是最小公倍数,求最小公倍数: 质因数分解法、公式法
辗转相除法求最大公约数: 辗转相除法, 又名欧几里德算法,是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,
再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的
最大公约数,那么最后的除数就是这两个数的最大公约数
公式法求最小公倍数: 两个数的乘积等于这两个数的最大公约数与最小公倍数的积
//这里采用 辗转相除法求最大公约数 公式法求最小公倍数
代码如下:
1 #include <stdio.h>
2
3 //求最大公约数:
4 int gcd(int x , int y)
5 {
6 if(!y)
7 return x;
8 else
9 return gcd(y , x%y);
10 }
11
12 //求最小公倍数:
13 int lcm(int a, int b)
14 {
15 return a*b/gcd(a,b);
16 }
17
18 int main()
19 {
20 int a, b;
21 scanf("%d%d",&a,&b);
22 if(a<b)
23 {
24 int temp = a;
25 a = b;
26 b = temp;
27 }
28
29 //求最大公约数:
30 int g;
31 g = gcd(a,b);
32 printf("%d\n",g);
33
34 //求最小公倍数:
35 int s;
36 s = lcm(a,b);
37 printf("%d\n",s);
38
39 return 0;
40 }
来源:https://www.cnblogs.com/wyb666/p/8146467.html