Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
思路:可以按顺序先求前两个数的最小公倍数,然后用求得的公倍数与后面的数继续计算
#include<stdio.h>
long long int gcd(long long int m,long long int n)
{
long long int k=1;
long long int a;
if(m<n)
{
a=m;
m=n;
n=a;
}
while(k)
{
k=m%n;
m=n;
n=k;
}
return m;
}
int main()
{
long long int t;
long long int a[1000];
long long int sum;
long long int i;
while(scanf("%lld",&t)!=EOF)
{
for(i=0;i<t;i++)
scanf("%lld",&a[i]);
sum=a[0]*a[1]/gcd(a[0],a[1]);
for(i=2;i<t;i++)
{
sum=sum*a[i]/gcd(sum,a[i]);
}
printf("%lld\n",sum);
}
return 0;
}