The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.
Input
Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 ... nm where m is the number of integers in the set and n1 ... nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.
Output
For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.
Sample Input
2
3 5 7 15
6 4 10296 936 1287 792 1
Sample Output
105
10296
分析:此题较简单,关键之处在于最大公约数的计算上。采用欧几里得算法不会超时。另外还需注意边界条件,当两个数中至少有一个为0时,最大公约数为0。下面给出我的实现代码:
模块一:最大公约数及最小公倍数求取
int gcd( int a, int b ) { int res; if( a == 0 || b == 0 ) { res = 0; } else { while( b != 0 ) { int r = a % b; a = b; b = r; } res = a; } return res; } int lcm( int a, int b ) { return a / gcd( a, b ) * b; }
模块二:主函数
int main() { int num_lines; cin >> num_lines; while( num_lines-- != 0 ) { int n; cin >> n; int y = 1;; while( n-- != 0 ) { int x; cin >> x; y = lcm( y, x ); } printf( "%d/n", y ); } return 0; }