最大公约数和最小公倍数

别来无恙 提交于 2020-03-14 16:02:53

输入两个正整数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 }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!