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.
2 3 5 7 15 6 4 10296 936 1287 792 1
105 10296
题意: 就是求一列数的最小公倍数;
思路:就是求前两个数的最大公倍数a,再让a与第三个数求最大公倍数再赋予a,这是时候的a就是,前三个数的最大公倍数,依次类推;
在求a,b的最大公倍数时,有一个小技巧,避免溢出 a/gcd(a,b)*b 先除再乘;避免数的溢出;
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int i,j,t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int a=1,b;
for(i=0;i<n;i++)
{
scanf("%d",&b);
a = a/(gcd(a,b))*b; // 先除再乘,避免数的溢出;
}
printf("%d\n",a);
}
return 0;
}