Pagini recente » Cod sursa (job #2728197) | Cod sursa (job #3039727) | Cod sursa (job #147396) | Cod sursa (job #1837492) | Cod sursa (job #1259552)
#include <cstdio>
#define Mmax 1000000
using namespace std;
int n,x,Max,i,j;
int mod[Mmax+10],S[Mmax+10],ap[Mmax+10];
bool ok;
bool P[Mmax+10],pm[Mmax];
long long SOL;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d", &n);
SOL=1LL*n*(n-1)/2;
for (;n;--n)
{
scanf("%d", &x);
ap[x]++;
if (x>Max) Max=x;
}
for (i=2;i<=Max;++i)
{
ok=pm[i];
if (!ok && i*i<=Max)
{
for (j=i*i;j<=Max;j+=i)
pm[j]=true;
for (j=i*i;j<=Max;j+=i*i)
P[j]=true;
}
for (j=i;j<=Max && !ok;j+=i)
mod[j]= (!mod[j]) ? (-1) : (mod[j]*(-1));
for (j=i;j<=Max;j+=i)
S[i]+=ap[j];
}
for (i=2;i<=Max;++i)
if (!P[i]) SOL+=1LL*mod[i]*S[i]*(S[i]-1)/2;
printf("%lld\n", SOL);
return 0;
}