Pagini recente » Cod sursa (job #1228577) | Electron_A | Cod sursa (job #930341) | Cod sursa (job #1845592) | Cod sursa (job #2693490)
#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() {
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> el;
exista[el] = true;
maxim = max(maxim, el);
}
for (int i = 2; i <= maxim; ++i) {
if (viz[i])
continue;
ll cnt = 0;
bool ok = false;
if (nr_prime[i] == 0)
ok = true;
for (int j = i; j <= maxim; j += i) {
if (ok) {
++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;
}
fout << (ll)n * (n - 1) / 2 - ans;
return 0;
}