http://acm.hdu.edu.cn/showproblem.php?pid=1019
代码
#include<stdio.h>
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
int main()
{
int T;
int n,a,b,i;
int cnt;
scanf("%u",&T);
while(T--)
{
scanf("%d",&n);
cnt=a=1;
for(i=1;i<=n;i++)
{
scanf("%d",&b);
cnt=a/gcd(a,b)*b;//换一下,先除后乘,免得数据溢出
a=cnt;
}
printf("%d\n",cnt);
}
return 0;
}
以上是我从一个博客上看到的递归算法实现gcd
我自己是用非递归算法写的
#include<stdio.h>
int gcd(int xiao,int da)
{
int temp;
while(xiao!=0)
{
temp=da%xiao;
da=xiao;
xiao=temp;
}
return(da);
}
int main()
{
int T;
int n,a,b,i;
int lcm;
scanf("%u",&T);//有T组数据
while(T--)
{
scanf("%d",&n);//每组数据有n个数据
lcm=a=1;
for(i=1;i<=n;i++)
{
scanf("%d",&b);
lcm=a/gcd(a,b)*b;//换一下,先除后乘,免得数据溢出
a=lcm;
}
printf("%d\n",lcm);
}
return 0;
}
其实是差不多的
就是在gcd函数上进行改动