Pagini recente » Cod sursa (job #1669492) | Cod sursa (job #1864266) | Cod sursa (job #774662) | Cod sursa (job #1027908) | Cod sursa (job #1068135)
#include<cstdio>
using namespace std;
int maxi,val,n,smn,i,j,nr,pr[1009],cr[1009],s[1000009];
char ap[1000009];
long long rez;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
for(i=2;i<=1000;i++)
if(cr[i]==0)
{
pr[++nr]=i;
for(j=i*i;j<=1000;j+=i)
cr[j]=1;
}
scanf("%d",&n);
while(n)
{
n--;
scanf("%d",&val);
ap[val]=1;
if(val>maxi) maxi=val;
}
for(i=2;i<=maxi;i++)
for(j=i;j<=maxi;j+=i)
s[i]+=ap[j];
rez=(long long)1LL*n*(n-1)/2;
for(i=2;i<=maxi;i++)
{
val=i;
smn=1;
for(j=1;pr[j]*pr[j]<=val;j++)
while(val%pr[j]==0)
{
smn^=1;
val/=pr[j];
}
if(val>1) smn^=1;
if(smn==1) rez-=s[i];
else rez+=s[i];
}
printf("%lld\n",rez);
return 0;
}