Pagini recente » Cod sursa (job #1396060) | Cod sursa (job #877965) | Cod sursa (job #1265269) | Cod sursa (job #2218805) | Cod sursa (job #1542630)
# include <bits/stdc++.h>
using namespace std;
const int XMAX = 1000005;
const int NMAX = 100005;
int a[XMAX], nrprimi[XMAX];
int n, i, j;
int MAX;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
cin >> n;
for (int i=1;i<=n;i++) {
int x;
cin>>x;
a[x] = 1; MAX = max(MAX, x);
}
for(int i=2;i<=MAX;i++)
if (nrprimi[i]==0)
for(int j=i;j<=MAX;j+=i) nrprimi[j]++;
for(int i=2;i*i<=MAX;i++)
for(int j=i*i;j<=MAX;j+=i*i)
nrprimi[j] = 0;
long long ans = 0;
for (int i=2;i<=MAX;i++)
if (nrprimi[i])
{
int xi = 0;
for (int j=i;j<=MAX;j+=i) xi += a[j] == 1;
ans += (nrprimi[i]&1 ? 1 : -1) * 1LL*xi*(xi-1)/2;
}
ans = 1LL*n*(n-1)/2 - ans;
cout << ans;
return 0;
}