Pagini recente » Cod sursa (job #1220324) | Cod sursa (job #1178898) | Cod sursa (job #833712) | Cod sursa (job #3157178) | Cod sursa (job #983224)
Cod sursa(job #983224)
#include<stdio.h>
#include<math.h>
bool b[1000002];
unsigned v[1000002];
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
long long int s,x,n;
int ma,l,j,i;
ma=1000000;
scanf("%lld",&n);
for(i=1;i<=n;++i)
{
scanf("%lld",&x);
b[x]=1;
}
s=n*(n-1)/2;
for(i=2;i<=ma;i++)
if(v[i]==0)
for(j=i;j<=ma;j=j+i)
v[j]++;
l=1000;
for(i=2;i<=l;i++)
if(v[i])
{
n=i*i;
for(j=n;j<=ma;j=j+n)
v[j]=0;
}
for(i=2;i<=ma;i++)
if(v[i])
{
x=0;
for(j=i;j<=ma;j=j+i)
if(b[j])
x++;
if(v[i]%2==1)
s=s-x*(x-1)/2;
else
s=s+x*(x-1)/2;
}
printf("%lld\n",s);
return 0;
}