Pagini recente » Cod sursa (job #412071) | Cod sursa (job #1437434) | Cod sursa (job #409601) | Cod sursa (job #2135222) | Cod sursa (job #1701565)
# include <bits/stdc++.h>
using namespace std;
ifstream fi("pairs.in");
ofstream fo("pairs.out");
const int nmax = 1e6 + 5;
bitset < nmax > b;
int cnt[nmax];
int s[nmax];
int d[nmax];
int num[nmax];
int main(void)
{
int n;
fi>>n;
long long ans = 0;
int x;
int mx = 0;
for (int i = 1;i <= n;++i)
{
fi>>x;cnt[x] = 1;mx = max(mx,x);
}
for (int i = 2;i <= mx;++i) b[i] = 1,d[i] = 1;
for (int i = 2;i*i<=mx;++i)
if (b[i])
for (int j = i*i;j <= mx;j += i) b[j] = 0;
for (int i = 2;i * i <= mx;++i)
for (int j = i * i;j <= mx;j += i * i) d[j] = 0;
for (int i = 2;i <= mx;++i)
if (b[i])
for (int j = i;j <= mx;j += i) ++num[j];
for (int i = 2;i <= mx;++i)
if (d[i])
{
int l = 0;
for (int j = i;j <= mx;j += i) l += cnt[j];
if (num[i]&1) ans += 1LL * l * (l - 1);
else ans -= 1LL * l * (l - 1);
}
return fo << (1LL * n * (n - 1) - ans) / 2 << '\n',0;
}