Pagini recente » Cod sursa (job #2039893) | Cod sursa (job #89957) | Cod sursa (job #2824737) | Cod sursa (job #1433233) | Cod sursa (job #2095657)
#include<cstdio>
using namespace std;
bool f[1000001];
int v[1000001],x[1000001];
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
int n,i,y,maxim=0,j;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",&y);
f[y]=1;
if(maxim<y)
maxim=y;
}
for(i=1;i<=maxim;++i)
{
v[i]=1;
}
for(i=2;i<=maxim;++i)
{
if(x[i]==0)
{
for(int j=i;j<=maxim;j+=i)
{
x[j]++;
v[j]*=i;
}
}
}
long long sol=0;
for(i=2;i<=maxim;++i)
{
if(v[i]==i)
{
int nr=0;
for(int j=i;j<=maxim;j+=i)
{
nr+=f[j];
}
if(x[i]%2)
sol+=((1LL*nr*(nr-1))/2);
else
sol-=((1LL*nr*(nr-1))/2);
}
}
printf("%lld\n",((1LL*n*(n-1))/2)-sol);
return 0;
}