Pagini recente » Cod sursa (job #2759673) | Cod sursa (job #1817423) | Cod sursa (job #1019018) | Cod sursa (job #888426) | Cod sursa (job #1752278)
#include <iostream>
#include<fstream>
#include<bitset>
using namespace std;
const int nmax=1000000;
bitset<nmax+10> ap,put;
int x,n,i,j,grd[nmax+10],ad;
long long tot,c,nr;
int main()
{
ifstream f("pairs.in");
ofstream g("pairs.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
ap[x]=1;
}
nr=n;
tot=(nr*(nr-1))/2;
for(i=2;i<=nmax;i++)
{
if(grd[i]==0)
for(j=i;j<=nmax;j+=i)
{
if((j/i)%i==0) put[j]=1;
grd[j]++;
}
if(grd[i]%2==0) ad=-1;
else ad=1;
c=0;
if(!put[i])
for(j=i;j<=nmax;j+=i)
{
if(ap[j]) c++;
}
if(ad==-1)tot=tot+(c*(c-1))/2;
else tot=tot-(c*(c-1))/2;
}
g<<tot;
return 0;
}