编写求两个整数最大公约数的函数 getGCM(int numberl, int numbe2)和求最小公倍数的函数 getLCM(int numberl, int number2),并在主函数中验证程序的正确性。
时间: 2024-12-24 17:17:19 浏览: 2
mesh-length-calculate.zip_matlab 齿轮_mesh matlab_numberl7y_斜齿轮 ma
5星 · 资源好评率100%
编写求两个整数最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)的函数在许多编程任务中都很常见。以下是这两个函数的基本实现:
```cpp
// 使用欧几里得算法计算两个整数的最大公约数 (GCD)
int gcd(int number1, int number2) {
if (number2 == 0)
return number1;
else
return gcd(number2, number1 % number2);
}
// 根据GCD计算两个整数的最小公倍数 (LCM = |number1 * number2| / GCD)
int lcm(int number1, int number2) {
return abs(number1 * number2) / gcd(number1, number2);
}
// 主函数,用于测试getGCM和getLCM的功能
int main() {
int num1 = 48, num2 = 18; // 测试输入
int result_gcd = getGCM(num1, num2);
int result_lcm = getLCM(num1, num2);
printf("The GCD of %d and %d is: %d\n", num1, num2, result_gcd);
printf("The LCM of %d and %d is: %d\n", num1, num2, result_lcm);
if(result_gcd > 0 && result_lcm > 0) { // 验证结果是否合理
if(result_gcd * result_lcm == num1 * num2) {
printf("The functions are working correctly.\n");
} else {
printf("There seems to be a problem with the implementation.\n");
}
}
return 0;
}
```
在这个例子中,我们首先定义了`gcd`函数,它递归地应用欧几里得算法直到找到两个数的最大公约数。然后,`lcm`函数利用GCD的结果来计算最小公倍数。在主函数中,我们给定一组数字作为测试,并检查它们的GCD和LCM是否满足最小公倍数等于两数乘积除以最大公约数的性质。
阅读全文