Pagini recente » Cod sursa (job #2197623) | Cod sursa (job #1705426) | Cod sursa (job #2545592) | Cod sursa (job #2300398) | Cod sursa (job #365642)
Cod sursa(job #365642)
#include<stdio.h>
long long n,max;
long long v[100002];
int f[1<<10],nr[1<<10],d[1<<10];
inline long long calc(long long x)
{
return x*(x-1)/2;
}
void rez()
{
long long 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)
if(d[i]&1)
sol=sol+calc(nr[i]);
else
sol=sol-calc(nr[i]);
printf("%lld\n",calc(n)-sol);
}
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
long long i,j;
for(i=1;i<=n;i++)
{
scanf("%lld",&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;
}