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