问题描述:编写程序,读入n个正整数,输出它们的最小公倍数。其中,lcm(x,y)=x*y/gcd(x,y),其中gcd(x,y)为x和y的最大公约数。
我的回复:
#include <stdio.h>
#define MaxData 100
int main(int argc, char *argv[]) {
int data[MaxData];
int count;
printf("请输入整数的个数:");
scanf("%d", &count);
if (count > MaxData || count <= 0) {
printf("整数的个数不能超过%d,也不能是负数或等于0!\n", MaxData);
return 0;
}
int maxNumber = 0;
for (int i = 0; i < count; i++) {
printf("请输入第%d个整数:", i + 1);
scanf("%d", &data[i]);
if (data[i] > maxNumber) {
maxNumber = data[i];
}
}
for (int result = maxNumber; result > 0; result++) { // 暴力求解
int isOK = 1;
for (int i = 0; i < count; i++) {
if (result % data[i] != 0) {
isOK = 0;
break;
}
}
if (1 == isOK) {
printf("它们的最小公倍数是:%d\n", result);
break;
}
}
return 0;
}