HDOJ_2028(Lowest Common Multiple Plus)
Problem Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6 3 2 5 7
Sample Output
12 70
My solution:
/2015.10.10/
#include<stdio.h>
int time(int a,int b)/*求最小公倍数*/
{
int t,i;
if(a<b)
{
t=a;
a=b;
b=t;
}
for(i=b;i>1;i--)
if(b%i==0&&a%i==0)
break;
if(i==1)
return a*b;
else
return a/i*b;//注意:不能写a*b/i,a*b/i的结果可能会超出int的范围
} //刚开始这样写一直w,最后看到别人的博客,才注意到这点
int main()
{
int a[1000];
int t,i,timesum,min1;
while(scanf("%d",&t)==1)
{
for(i=0;i<t;i++)
scanf("%d",&a[i]);
timesum=a[0];
for(i=1;i<t;i++)
timesum=time(timesum,a[i]);
printf("%d\n",timesum);
}
return 0;
}