这是因为虽然最后的结果是32位整数,但是a*b的结果不一定是啊,有可能会超,所以lcm函数中的计算顺序需要调换一下,return a/gcd(a, b)*b;
不应该是while(scanf("%d",&n))么 scanf返回的是读取变量数目 你一个取反直接跳出循环了不就 还有 假如我给你的数据里的n是0 你的程序一样跪 少年