Pagini recente » Cod sursa (job #1836544) | Cod sursa (job #521009) | Cod sursa (job #2063192) | Cod sursa (job #263288) | Cod sursa (job #1012790)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,vmax=0,nrdiv[1000005],pr[1000005];
bool ok[100005],dist[1000005];
long long sol=0;
int main()
{ int i,j,el;
f>>n;
for(i=1;i<=n;i++)
{f>>el;
ok[el]=1;
vmax=max(vmax,el);
}
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;
}