Pagini recente » Cod sursa (job #548559) | Cod sursa (job #1267361) | Cod sursa (job #1068344) | Cod sursa (job #2766179) | Cod sursa (job #2693486)
#include <bits/stdc++.h>
#define ll long long
#define LMAX 1000005
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
bool exista[LMAX], viz[LMAX];
int n, el, maxim, nr_prime[LMAX];
ll ans;
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> el;
exista[el] = true;
maxim = max(maxim, el);
}
for (int i = 2; i <= maxim; ++i) {
if (viz[i])
continue;
ll cnt = 0;
for (int j = i; j <= maxim; j += i) {
if (nr_prime[i] == 0) {
++nr_prime[j];
if (j % (i * i) == 0)
viz[j] = true;
}
cnt += exista[j];
}
if (nr_prime[i] % 2 == 1)
ans += cnt * (cnt - 1) / 2;
else
ans -= cnt * (cnt - 1) / 2;
}
cout << (ll)n * (n - 1) / 2 - ans;
return 0;
}