Pagini recente » Cod sursa (job #103560) | Cod sursa (job #192690) | Cod sursa (job #2120740) | Cod sursa (job #1675331) | Cod sursa (job #2095628)
#include<cstdio>
using namespace std;
bool f[1000001];
int 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=2;i<=maxim;++i)
{
for(j=1;j<=maxim/i;++j)
{
if(f[i*j])
x[i]++;
}
}
long long sol=0;
for(i=2;i<=maxim;++i)
{
bool ok=1;
int u=i,nr=0;
if(u%2==0)
{
nr++;
if(u%4==0)
ok=0;
else
u/=2;
}
if(ok)
{
int j=3;
while(j*j<=u)
{
if(u%j==0)
{
if(u%(j*j)==0)
{
ok=0;
break;
}
else
{
u/=j;
nr++;
}
}
j+=2;
}
if(ok)
{
if(u>1)
nr++;
if(nr%2)
sol+=((1LL*x[i]*(x[i]-1))/2);
else
sol-=((1LL*x[i]*(x[i]-1))/2);
}
}
}
printf("%lld\n",((1LL*n*(n-1))/2)-sol);
return 0;
}