一道acm题,测试了都没有关问题,提交却是错的,

一道acm题,测试了都没问题,提交却是错的,求助!
题目描述
求n(n <= 50)个数的最小公倍数。

输入
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

输出
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

样例输入
2 4 6
3 2 5 7
样例输出
12
70

下面是我的代码
#include <iostream>
using namespace std;
int main()
{
int a[49], i, n,j,sum,b,k,c,;
       while (cin >> n)
{
for (i = 0; i < n; i++)
{
cin >> a[i]; 
}
for (i = 1; i < n; i++)
{
if (a[0] < a[i])
{
b = a[0]; a[0] = a[i]; a[i] = b;
}
}//以上为找出该组数中的最大值为a【0】
for (k = 1;; k++)
{
i = a[0] * k;
sum = 0;
for (j = 0; j < n; j++)
{
if (i%a[j] == 0) sum++;
}
if (sum == n)
{
cout << i << endl;
c = sum;
break;
}
if (c == n)break;
}//以上为最大值成倍递增找出该组数的最小公倍数
}
return 0;
}




------解决思路----------------------
if (c == n)break;

这是啥意思?
------解决思路----------------------
如下改1行删1行可AC:
#include <iostream>
using namespace std;
int main()
{
  unsigned a[1000], i, n,j,sum,b,k,c;//改 int a[49], i, n,j,sum,b,k,c,;
  while (cin >> n)
  {
    for (i = 0; i < n; i++)
    {
      cin >> a[i]; 
    }
    for (i = 1; i < n; i++)
    {
      if (a[0] < a[i])
      {
        b = a[0]; a[0] = a[i]; a[i] = b;
      }
    }//以上为找出该组数中的最大值为a【0】
    for (k = 1;; k++)
    {
      i = a[0] * k;
      sum = 0;
      for (j = 0; j < n; j++)
      {
        if (i%a[j] == 0) sum++;
      }
      if (sum == n)
      {
        cout << i << endl;
        c = sum;
        break;
      }
      //删 if (c == n)break;
    }//以上为最大值成倍递增找出该组数的最小公倍数
  }
  return 0;
}