Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
#include<stdio.h>
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int lcm(int a,int b)
{
int c;
c=gcd(a,b);
return a/c*b;
}
int main()
{
int n,ans,i;
int a[100];
while(~scanf("%d",&n))
{
ans=1;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=n;i++)
{
ans=lcm(a[i],ans);
}
printf("%d\n",ans);
}
return 0;
}
最小公倍数=两整数乘积/最大公约数
辗转相除法:1,c=a%b
2,当c=0,则b为最大公约数
3,当c!=0,则a=吧,b=c。再执行1