hdoj求多个数的最小公倍数
#include<stdio.h>
int gys(long int a,long int b)
{
long int t,r=1;
if(a<b)//默认a>b
{
t=a;
a=b;
b=t;
}
while(1)
{
r=a%b;
if(r!=0)
{
a=b;
b=r;
}
else break;
}
return b;
}
int main()
{
long int n,i,t,sum;
while(scanf("%ld",&n)==1)
{
long int a[n];
for(i=0;i<n;i++)
scanf("%ld",&a[i]);
t=a[0];
sum=a[0];
for(i=1;i<n;i++)
{
t=gys(t,a[i]);//最大公因数
sum=sum/t*a[i];//这里数据容易溢出,故可以先把数据减小最小公倍数
t=sum;//再将利用循环求最小公倍数和下一个的最小公倍数
}
printf("%ld\n",sum);
}
return 0;
}
最开始提交多次,都是wrong~原来是数据溢出的原因