Pagini recente » Cod sursa (job #2866699) | Cod sursa (job #1115285) | Cod sursa (job #1332205) | Cod sursa (job #418128) | Cod sursa (job #878588)
Cod sursa(job #878588)
#include<cstdio>
#define nmax 100000
using namespace std;
long long v[nmax],n,sol,mx,nr;
int M[nmax];
int main()
{
long long i,j,x;
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%lld", &n);
sol=n*(n-1)/2;
for(;n;n--)
{
scanf("%lld ", &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])continue;
for(j=i,nr=0;j<=mx;j+=i)
if(M[j])nr++;
if(v[j]%2)sol+=(nr*(nr-1)/2);
else sol-=(nr*(nr-1)/2);
}
printf("%lld ", sol);
return 0;
}