Pagini recente » Cod sursa (job #113746) | Cod sursa (job #2593314) | Cod sursa (job #1617761) | Cod sursa (job #1178664) | Cod sursa (job #1293780)
#include<cstdio>
#include<fstream>
#include<bitset>
#include<algorithm>
using namespace std;
#define MAXX 1000010
bitset<MAXX> p,b;
int d[MAXX];
int main()
{
FILE* si=fopen("pairs.in","r");
FILE* so=fopen("pairs.out","w");
long long n;
fscanf(si,"%lli",&n);
int v[n],i;
int maxx=0;
for(i=0;i<n;++i)
{
fscanf(si,"%i",&v[i]);
if(v[i]>maxx)
maxx=v[i];
}
p[1]=0;
b[1]=1;
int j;
for(i=2;i<=maxx;++i)
{
if(p[i]==0)
{
d[i]=1;
for(j=2;(i*j)<=maxx;++j)
{
p[i*j]=1;
if(j%i==0)
b[i*j]=1;
++d[i*j];
}
}
}
//...............................................................
long long cont;
long long s;
s=0;
for(i=2;i<=maxx;++i)
{
if(b[i]==0)
{
cont=0;
for(j=0;j<n;++j)
if(v[j]%i==0)
++cont;
cont=cont*(cont-1);
cont=cont/2;
if(d[i]%2==0)
s=s-cont;
else
s=s+cont;
}
}
fprintf(so,"%lli",(n*(n-1))/2-s);
fclose(so);
fclose(si);
}