楼主的问题应该出在,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; }