楼主的问题应该出在,return large * small / y;这句上。
先进行乘法运算可能造成溢出。
调换一下运算顺序,先做除法运算。
先进行乘法运算可能造成溢出。
调换一下运算顺序,先做除法运算。

重剑无锋,大巧不工
程序代码:#include <stdio.h>
int fun (int x, int y) //求两数的最小公倍数
{
int temp, r, large, small;
if (x < y)
{
temp = y;
y = x;
x = temp;
}
large = x;
small = y;
while ((r = x % y) > 0)
{
x = y;
y = r;
}
return large / y * small ;
}
int main ()
{
int m, n;
int i;
int a, mul;
scanf ("%d", &m);
while (m--)
{
scanf ("%d", &n);
mul = 1;
for (i = 0; i < n; i++)
{
scanf ("%d", &a);
mul = fun (mul, a);
}
printf ("%d\n", mul);
}
return 0;
}