Pagini recente » Cod sursa (job #750200) | Cod sursa (job #526747) | Cod sursa (job #376259) | Cod sursa (job #1885893) | Cod sursa (job #293516)
Cod sursa(job #293516)
#include<stdio.h>
long long r;
long n,c[1000001],max,p[1000001];
bool fr[1000001];
int main()
{ int i,j;
long nr;
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{ scanf("%ld",&nr);
if(max<nr) max=nr;
fr[nr]=1;
}
for(i=2;i<=max;i++)
for(j=i;j<=max;j+=i)
c[i]+=fr[j];
for(i=2;i<=max;i++)
if(!p[i])
for(j=2*i;j<=max;j+=i)
if(p[j]!=-1&&j%(i*i))
p[j]++;
else p[j]=-1;
r=(long long)n*(n-1)/2;
for(i=2;i<=max;i++)
if(p[i]>=0)
{ if(!p[i])
p[i]=1;
if(p[i]%2)
r-=(long long)c[i]*(c[i]-1)/2;
else r+=(long long)c[i]*(c[i]-1)/2;
}
printf("%lld",r);
fclose(stdin);
fclose(stdout);
return 0;
}