用C语言写出“求n个数的最小公倍数”的程序
时间: 2023-03-03 08:32:20 浏览: 142
以下是用C语言写出求n个数的最小公倍数的程序:
```c
#include <stdio.h>
// 求两个数的最大公约数
int gcd(int a, int b) {
if (a % b == 0) {
return b;
} else {
return gcd(b, a % b);
}
}
// 求两个数的最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
// 求n个数的最小公倍数
int lcm_n(int arr[], int n) {
int ans = arr[0];
for (int i = 1; i < n; i++) {
ans = lcm(ans, arr[i]);
}
return ans;
}
int main() {
int n;
printf("请输入数的个数:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int ans = lcm_n(arr, n);
printf("这%d个数的最小公倍数为:%d\n", n, ans);
return 0;
}
```
上述程序首先定义了两个函数,`gcd`用于求两个数的最大公约数,`lcm`用于求两个数的最小公倍数。其中,最小公倍数可以通过两个数的乘积除以最大公约数来求得。
接着定义了一个`lcm_n`函数,该函数用于求n个数的最小公倍数。该函数首先将数组中的第一个数作为`ans`,然后通过循环,依次求得`ans`和数组中其他数的最小公倍数,最终返回结果。
在`main`函数中,首先输入数的个数`n`,然后定义一个长度为`n`的数组`arr`,用于存储输入的n个数。接着通过循环,输入n个数到数组`arr`中。最后调用`lcm_n`函数,求得这n个数的最小公倍数,并输出结果。
阅读全文