Pagini recente » Cod sursa (job #2297482) | Cod sursa (job #1640558) | Cod sursa (job #2079581) | Cod sursa (job #2141768) | Cod sursa (job #974129)
Cod sursa(job #974129)
#include<stdio.h>
char f[1000002];
long long v[1000002];
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
long long n,max=0,i,j,sol,x;
scanf("%lld",&n);
sol=n*(n-1)/2;
for(i=1;i<=n;++i)
{
scanf("%lld",&x);
f[x]=1;
if(x>max)
max=x;
}
for(i=2;i<=max;++i)
if(v[i]==0)
for(j=i;j<=max;j=j+i)
++v[j];
for(i=2;i*i<=max;++i)
for(j=i*i;j<=max;j=j+i*i)
v[j]=-1;
for(i=2;i<=max;++i)
if(v[i]!=-1)
{
x=0;
for(j=i;j<=max;j=j+i)
if(f[j])
++x;
sol-=((v[i]%2)*2-1)*x*(x-1)/2;
}
printf("%lld\n",sol);
return 0;
}