请用c语言编写代码 用“分解质因子”方法求出最小公倍数。 如 输入:2 4 输出:4
时间: 2024-10-06 12:04:55 浏览: 65
在C语言中,我们可以使用分解质因数的方式来计算两个数的最小公倍数(LCM)。首先分解每个数到其质因数,然后取它们各自最大质因数的最大次数作为最终结果。以下是代码示例:
```c
#include <stdio.h>
// 函数用于分解质因数
void prime_factors(int num, int factors[], int *index) {
for (int i = 2; i * i <= num; i++) {
while (num % i == 0) {
factors[*index] = i;
num /= i;
(*index)++;
}
}
if (num > 1) { // 如果num还有剩余的质因数
factors[*index] = num;
(*index)++;
}
}
// 函数计算最小公倍数
int lcm(int a, int b) {
int factors[a + b], index = 0;
prime_factors(a, factors, &index);
prime_factors(b, factors + index, &index);
int max_index = index;
for (int i = 0; i < index; i++) {
int freq_a = 0, freq_b = 0;
while (factors[i] && factors[i] <= factors[max_index]) {
if (factors[freq_a++] == factors[i])
break;
if (factors[index - 1 - i] == factors[i])
freq_b++;
}
max_index = std::max(max_index, freq_a);
max_index = std::max(max_index, index - 1 - i + freq_b);
}
int result = 1;
for (int i = 0; i < max_index; i++) {
result *= factors[i];
}
return result;
}
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int lcm_value = lcm(num1, num2);
printf("两数的最小公倍数是:%d\n", lcm_value);
return 0;
}
```
当你运行这个程序并输入`2 4`时,它会返回`4`,因为`2`和`4`的最小公倍数确实是`4`。
阅读全文