Pagini recente » Cod sursa (job #1760876) | Cod sursa (job #2223591) | Cod sursa (job #1702176) | Istoria paginii runda/teme_acmunibuc_2014_1_2 | Cod sursa (job #2376779)
#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) {
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;
}