Pagini recente » Cod sursa (job #1375381) | Cod sursa (job #1046997) | Cod sursa (job #1824590) | Cod sursa (job #1836306) | Cod sursa (job #1259310)
#include<cstdio>
#include<algorithm>
using namespace std;
long long res,rez;
bool c[1000002],treu,d[1000002],m[1000002];
int nr[1000002],i,mx,a[100002],n,j,s[1000002];
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
mx=max(mx,a[i]);
m[a[i]]=true;
}
rez=1LL*n*(n-1)/2;
for(i=2;i<=mx;i++)
{
treu=c[i];
if(!treu&&i<=mx/i)
{
for(j=i*i;j<=mx;j+=i*i)
{
d[j]=true;
}
for(j=i*i;j<=mx;j+=i)
{
c[j]=true;
}
}
if(!treu)
{
for(j=i;j<=mx;j+=i)
{
nr[j]^=1;
}
}
for(j=i;j<=mx;j+=i)
{
if(m[j])
{
s[i]++;
}
}
}
for(i=2;i<=mx;i++)
{
if(!d[i])
{
res=1LL*s[i]*(s[i]-1)/2;
if(nr[i]==1)
{
rez-=res;
}
else
{
rez+=res;
}
}
}
printf("%d\n",rez);
}