Pagini recente » Cod sursa (job #1451725) | Cod sursa (job #217727) | Cod sursa (job #1928382) | Cod sursa (job #2866132) | Cod sursa (job #2735343)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int NRMAX = 1e6;
int n, x, fr[NRMAX + 1], nrdivpr[NRMAX + 1];
bool bad[NRMAX + 1];
int main()
{
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; ++i) scanf("%d", &x), ++fr[x];
ll ans = n * (n - 1) / 2;
for(int i = 2; i <= NRMAX; ++i)
if(!bad[i]) {
ll crt = 0;
for(int j = i; j <= NRMAX; crt += fr[j], j += i)
if(!nrdivpr[j]) {
++nrdivpr[j];
if(1ll * j % (i * i) == 0) bad[j] = 1;
}
if(nrdivpr[i] % 2) ans -= crt * (crt - 1) / 2;
else ans += crt * (crt - 1) / 2;
}
printf("%lld", ans);
return 0;
}