Pagini recente » Cod sursa (job #1074294) | Cod sursa (job #1479027) | Cod sursa (job #2049716) | Cod sursa (job #251241) | Cod sursa (job #1012786)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,vmax=0,v[100005],nrdiv[1000005],pr[1000005];
bool ok[100005],dist[1000005];
long long sol=0;
int main()
{ int i,j;
f>>n;
for(i=1;i<=n;i++)
{f>>v[i];
ok[v[i]]=1;
vmax=max(vmax,v[i]);
}
for(i=2;i<=vmax;i++)
for(j=i;j<=vmax;j+=i)
pr[j]++;
for(i=2;i*i<=vmax;i++)
if (pr[j]==1)
for(j=i*i;j<=vmax;j+=i*i)
dist[j]=1;
for(i=2;i<=vmax;i++)
if (!dist[i])
for(j=i;j<=vmax;j+=i)
if (ok[j]) nrdiv[i]++;
for(i=2;i<=vmax;i++)
if (pr[i]%2==0)
sol-=1LL*nrdiv[i]*(nrdiv[i]-1)/2;
else
sol+=1LL*nrdiv[i]*(nrdiv[i]-1)/2;
g<<1LL* (n*(n-1)/2)-sol;
return 0;
}