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
思路:
a,b的最小公倍数=(a*b)/(a,b的最大公约数)
关于最大公约数:链接
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* 最大公约数的递归:
* 1、若a可以整除b,则最大公约数是b
* 2、如果1不成立,最大公约数便是b与a%b的最大公约数
* 示例:求(140,21)
* 140%21 = 14
* 21%14 = 7
* 14%7 = 0
* 返回7
* */
long long x,b;
int gcd(int a,int b) //求a,b的最大公约数
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main()
{
int t,m;
scanf("%d",&t);
while(t--)
{
b=1; //最小公倍数
scanf("%d",&m);
while(m--)
{
scanf("%lld",&x);
b=b/gcd(b,x)*x; //最小公倍数(先除后乘防溢出)
}
printf("%lld\n",b);
}
return 0;
}