Pagini recente » Cod sursa (job #1647319) | Cod sursa (job #2377380) | Cod sursa (job #1368954) | Cod sursa (job #2845720) | Cod sursa (job #360459)
Cod sursa(job #360459)
#include<stdio.h>
#include<string.h>
long n,i,a[100050],f[1000050],x[1000050],j,max,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[i]);
if(a[i]>max)max=a[i];
f[a[i]]++;}
for(i=1;i<=max;++i)
for(j=1;j<=max/i;++j)
x[i]+=f[i*j];
memset(f,0,sizeof(f));
for(i=2;i<=max;++i)
if(f[i]==0)
for(j=1;j<=max/i;++j)
{if(j%i==0)f[i*j]=-1;
if(f[i*j]>-1)f[i*j]++;}
for(i=2;i<=max;++i)
if(f[i]>0)
if(f[i]%2)s+=(x[i]*(x[i]-1)/2);
else s-=(x[i]*(x[i]-1)/2);
printf("%ld\n",n*(n-1)/2-s);
return 0;
}