求互质用欧几里得算法,遍历可以暴力二重循环,也可以先排序,然后第二层循环从i+1开始,因为分母必须大于分子,两种方法都可以过,而且暴力还容易写点。

#include <iostream>
#include <algorithm>
using namespace std;

int n;
int a[605];

int gcd(int a, int b)
{
    return b == 0 ? a : gcd(b, a % b);
}

int main()
{
    while (cin >> n && n != 0)
    {
        for (int i = 0; i < n; ++i)
            cin >> a[i];
        sort(a, a + n);
        int cnt = 0;
        for (int i = 0; i < n; ++i)
            for (int j = i + 1; j < n; ++j)
                if (a[j] % a[i] != 0 && gcd(a[j], a[i]) == 1)
                    ++cnt;
        cout << cnt << endl;
    }
    return 0;
}