Pagini recente » Cod sursa (job #2577316) | Cod sursa (job #2319597) | Cod sursa (job #540646) | Cod sursa (job #3177392) | Cod sursa (job #1542594)
# include <bits/stdc++.h>
using namespace std;
const int XMAX = 1000005;
const int NMAX = 100005;
int a[XMAX], viz[XMAX], nrprimi[XMAX], fprimi[XMAX], x[NMAX];
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++)
{
fprimi[i] = i;
for (int j=i;j<=XMAX;j+=i)
x[i] += a[j]==1;
}
for (int i=2;i<=MAX;i++)
{
if (viz[i]==0) {
for (int j=i;j<=MAX;j+=i)
nrprimi[j]++, fprimi[j] /= i, viz[j]=1;
}
}
long long ans = 0;
for (int i=2;i<=MAX;i++)
if (fprimi[i]==1 && x[i]>1)
ans += (nrprimi[i]&1 ? 1 : -1) * 1LL*x[i]*(x[i]-1)/2;
cout<<ans;
return 0;
}