Pagini recente » Cod sursa (job #1285592) | Cod sursa (job #2101049) | Cod sursa (job #695213) | Cod sursa (job #754912) | Cod sursa (job #878849)
Cod sursa(job #878849)
#include<cstdio>
#define nmax 1000100
using namespace std;
long long v[nmax],sol,nr,mx,n;
int M[nmax];
int main()
{
long long i,j,x;
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%lld\n", &n);
sol=n*(n-1)/2;
for(;n;n--)
{
scanf("%lld\n", &x);
M[x]=1;
if(x>mx)mx=x;
}
for(i=2;i<=mx;i++)
if(!v[i])
for(j=i;j<=mx;j+=i)
v[j]++;
for(i=2;i*i<=mx;i++)
for(j=i*i;j<=mx;j+=i*i)
v[j]=0;
for(i=2;i<=mx;i++)
if(v[i])
{
nr=0;
for(j=i;j<=mx;j+=i)
if(M[j])nr++;
if(v[i]%2)sol-=nr*(nr-1)/2;
else sol+=nr*(nr-1)/2;
}
printf("%lld\n", sol);
return 0;
}