Pagini recente » Cod sursa (job #2080313) | Cod sursa (job #1936135) | Cod sursa (job #195366) | Cod sursa (job #1458445) | Cod sursa (job #1892760)
#include <cstdio>
#include <cstring>
using namespace std;
FILE *fi,*fo;
int n;
int i,j;
int F[1000001],E[1000001];
int A[100001],X[1000001];
int maxv;
bool ok;
int nrd;
long long rez;
int main()
{
fi=fopen("pairs.in","r");
fo=fopen("pairs.out","w");
fscanf(fi,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(fi,"%d",&A[i]);
F[A[i]]++;
if(maxv<A[i])
maxv=A[i];
}
for(i=1;i<=maxv;i++)
for(j=1;i*j<=maxv;j++)
if(F[i*j]>0)
X[i]++;
memset(F,0,sizeof(F));
for(i=2;i<=maxv;i++)
if(!E[i])
{
for(j=i;j<=maxv;j+=i)
E[j]++;
for(j=i*i;j<=maxv;j+=i*i)
F[j]++;
}
for(i=2;i<=maxv;i++)
if(F[i] == 0)
{
nrd=E[i];
if(nrd%2==0)
rez-=(long long)X[i]*(X[i]-1)/2;
else
rez+=(long long)X[i]*(X[i]-1)/2;
}
fprintf(fo,"%d",n*(n-1)/2-rez);
fclose(fi);
fclose(fo);
return 0;
}