Pagini recente » Cod sursa (job #495298) | Cod sursa (job #2517873) | Cod sursa (job #764901) | Cod sursa (job #1197276) | Cod sursa (job #2376825)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("pairs.in");
ofstream cout("pairs.out");
int m = 1e6;
vector<int> mu(m + 1, 1), lo(m + 1, 0), cnt(m + 1, 0);
for (int d = 2; d <= m; ++d) {
if (lo[d]) continue;
for (int i = d; i <= m; i += d) {
if (i % (1LL * d * d) == 0)
mu[i] = 0;
lo[i] = d;
mu[i] *= -1;
}
}
int n; cin >> n;
for (int i = 0; i < n; ++i) {
int x; cin >> x;
vector<int> divs = {1};
while (x > 1) {
int p = lo[x], e = 0;
while (x % p == 0) {
e += 1;
x /= p;
}
int sz = divs.size();
for (int i = 0; i < sz; ++i) {
int now = divs[i];
for (int j = 1; j <= e; ++j) {
now *= p;
divs.push_back(now);
}
}
}
for (auto x : divs)
cnt[x] += 1;
}
long long ans = 0;
for (int d = 1; d <= m; ++d) {
ans += 1LL * mu[d] * cnt[d] * (cnt[d] - 1) / 2;
}
cout << ans << endl;
return 0;
}