Pagini recente » Cod sursa (job #1751499) | Cod sursa (job #2724587) | Cod sursa (job #2245127) | Cod sursa (job #2757462) | Cod sursa (job #360471)
Cod sursa(job #360471)
#include<stdio.h>
#include<string.h>
long n,i,a,f[1000050],x[1000050],j,max;
long long s;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;++i)
{scanf("%ld",&a);
if(a>max)max=a;
f[a]=1;}
for(i=2;i<=max;++i)
for(j=i;j<=max;j+=i)
x[i]+=f[j];
memset(f,0,sizeof(f));
for(i=2;i<=max;++i)
if(f[i]==0)
for(j=i;j<=max;j+=i)
{if((j/i)%i==0)f[j]=-1;
if(f[j]>-1)f[j]++;}
for(i=2;i<=max;++i)
if(f[i]>0)
if(f[i]%2)s+=((long long)x[i]*(x[i]-1)/2);
else s-=((long long)x[i]*(x[i]-1)/2);
printf("%lld\n",(long long)(n*(n-1)/2)-s);
return 0;
}