题目:输入两个正整数m和n,求其最大公约数和最小公倍数
程序分析
- 需要求两个正整数m和n的最大公约数和最小公倍数。
- 最大公约数(GCD)是两个数的最大公因数,最小公倍数(LCM)是两个数的最小公倍数。
解题思路
我们可以使用三种不同的方法来实现这个程序,分别是:
- 辗转相除法:利用辗转相除法求解最大公约数,然后通过公式计算最小公倍数。
- 穷举法:从1到m*n中的每个数,逐个判断是否是最大公约数和最小公倍数。
- 公式法:利用最大公约数的公式计算最小公倍数。
方法一:辗转相除法
优点:
- 算法简单,容易理解和实现。
缺点:
- 求解最小公倍数需要额外计算,效率稍低。
#include <stdio.h>
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int m, n;
printf("Enter two positive integers