Pagini recente » Cod sursa (job #934906) | Cod sursa (job #470681) | Cod sursa (job #2660220) | Cod sursa (job #913369) | Cod sursa (job #365634)
Cod sursa(job #365634)
#include<stdio.h>
int n,max;
int v[100002];
int f[1000002],nr[1000002],d[1000002];
inline int calc(int x)
{
return x*(x-1)/2;
}
void rez()
{
int i,j,k,sol=0;
for(i=2;i<=max;i++)
if(!d[i])
{
for(k=i*i;k<=max;k+=i*i)
d[k]=-1;
for(j=i;j<=max;j+=i)
d[j]=d[j]+(d[j]>=0);
}
for(i=2;i<=max;i++)
if(d[i]>=0)
sol=sol+(d[i]&1)?calc(nr[i]):(-1*calc(nr[i]));
printf("%d\n",(calc(n)-sol)/2);
}
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
int i,j;
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
f[v[i]]++;
if(v[i]>max)
max=v[i];
}
for(i=2;i<=max;i++)
for(j=i;j<=max;j+=i)
nr[i]+=f[j];
rez();
return 0;
}