Pagini recente » Cod sursa (job #2015620) | Cod sursa (job #2099469) | Cod sursa (job #1245679) | Cod sursa (job #1752740) | Cod sursa (job #390018)
Cod sursa(job #390018)
#include<stdio.h>
#include<algorithm>
#include<bitset>
#include<math.h>
using namespace std;
bitset<1<<20> a;
long long n,i,j,x[10000100],nr[10000100],ma,rez;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%lld",&n);
for(i=1;i<=n;++i) { scanf("%lld",&j);
a[j]=1;
ma=max(ma,j);
}
for(i=2;i<=ma;++i)
for(j=i;j<=ma;j+=i) x[i]+=a[j];
for(i=2;i<=ma;++i)
if(nr[i]==0)
{ for(j=i*i;j<=ma;j+=i*i) nr[j]=-1;
for(j=i;j<=ma;j+=i)
if(nr[j]>=0) nr[j]++;
}
long long rez=0;
for(i=2;i<=ma;++i)
if(nr[i]>0)
{ if(nr[i]%2) rez+=(long long)(x[i]*(x[i]-1))/2;
else rez-=(long long)(x[i]*(x[i]-1))/2;
}
long long t=(long long)n*(n-1);
t/=2;
rez=t-rez;
printf("%lld\n",rez);
fclose(stdin);
fclose(stdout);
return 0;
}