Pagini recente » Cod sursa (job #51940) | Cod sursa (job #1896827) | Cod sursa (job #554205) | Cod sursa (job #590928) | Cod sursa (job #1289141)
#include<fstream>
#include<bitset>
using namespace std;
#define N 1000000
bitset <N> p,n_ok;
int f[N],viz[N],x;
unsigned long long M;
int main()
{
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int n;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>x;
viz[x]=1;
if(x>M)
{
M=x;
}
}
for(int i=2;i<=M;i++)
{
if(!p[i])
{
f[i]=1;
for(int j=2;j<=M/i;++j)
{
p[i*j]=1;
if(j%i==0) n_ok[i*j]=1;
f[i*j]++;
}
}
}
unsigned long long sol=0,nr;
for(int i=2;i<=n;++i)
{
if(!n_ok[i])
{
nr=0;
for(int j=2;j<=M/i;j++)
{
if(viz[i*j]) nr++;
if(f[i]%2) sol+=nr*(nr-1)/2;
else sol-=nr*(nr-1)/2;
}
}
}
sol=n*(n-1)/2-sol;
fout<<sol;
}