Pagini recente » Cod sursa (job #1417297) | Cod sursa (job #3162001) | Cod sursa (job #862154) | Cod sursa (job #1686359) | Cod sursa (job #473873)
Cod sursa(job #473873)
#include<stdio.h>
#define ll long long
#define maxim(a,b) (a>b ? a : b)
ll sol,h;
int vmax,v[100005],nrp[1000006],n;
char f[1000006],valid[1000006],ciur[1000006];
int main ()
{
int i,j;
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
f[v[i]]=1;
vmax=maxim(vmax,v[i]);
}
for(i=2;i<=vmax;i++)
valid[i]=1;
for(i=2;i<=vmax;i++)
{
if(ciur[i])
continue;
for(j=i;j<=vmax;j+=i)
{
nrp[j]++;
ciur[j]=1;
if((j/i)%i==0)
valid[j]=0;
}
}
sol=(ll)n*(n-1)/2;
for(i=2;i<=vmax;i++)
if(valid[i])
{
h=0;
for(j=i;j<=vmax;j+=i)
if(f[j])
h++;
if(nrp[i]&1)
sol-=(ll)h*(h-1)/2;
else
sol+=(ll)h*(h-1)/2;
}
printf("%lld\n",sol);
return 0;
}