Solution of ZOJ 1797 Least Common Multiplier

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; }

 

 

你可能感兴趣的:(算法,Integer,input,each,output,Numbers)