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