Pagini recente » Cod sursa (job #2487667) | Cod sursa (job #1559514) | Cod sursa (job #2550764) | Cod sursa (job #1544766) | Cod sursa (job #1293787)
#include<stdio.h>
#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()
{
FILE *fin,*fout;
fin=fopen("pairs.in","r");
fout=fopen("pairs.out","w");
int n;
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d",&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<=M;++i)
{
if(!n_ok[i])
{
nr=0;
for(int j=1;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;
fprintf(fout,"%d\n",sol);
}