Pagini recente » Cod sursa (job #2558369) | Cod sursa (job #364684) | Cod sursa (job #145394) | Cod sursa (job #78385) | Cod sursa (job #2376786)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("pairs.in");
ofstream cout("pairs.out");
int n, m; cin >> n; m = 1e6;
vector<int> v(m + 1, 0);
for (int i = 0; i < n; ++i) {
int x; cin >> x;
v[x] = 1;
}
vector<int> mu(m + 1, 1), prime(m + 1, 1);
for (int d = 2; d <= m; ++d) {
if (!prime[d]) continue;
for (int i = d; i <= m; i += d) {
if (i % (1LL * d * d) == 0)
mu[i] = 0;
prime[i] = 0;
mu[i] *= -1;
}
}
long long ans = 0;
for (int d = 1; d <= m; ++d) {
if (mu[d] == 0) continue;
int cnt = 0;
for (int i = d; i <= m; i += d) {
cnt += v[i];
}
ans += 1LL * mu[d] * cnt * (cnt - 1) / 2;
}
cout << ans << endl;
return 0;
}