题目简介:
Problem Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 63 2 5 7
Sample Output
1270
做这道题我用的方法是 两个数的最小公倍数=两个数的乘积 / 两个数的最小公约数 ,然后在用前两个数的最小公倍数与第三个数求最小公倍数,以此类推下去。基本是暴力的解法啦!
#include<iostream>
using namespace std;
int maxgy(long long a, long long b) {
long long c;
if (a < b)
c = a;
else
c = b;
for (int i = c;; i--) {
if (a % i == 0 && b % i == 0)
return i;
}
}
int main()
{
long long n, t, s,mingb;
while (cin >> n ) {
t = 1; s = 1;
for (int i = 0; i < n; i++) {
cin >> t;
s = (t*s) / maxgy(t, s);
}
cout << s << endl;
}
return 0;
}