Pagini recente » Cod sursa (job #615156) | Cod sursa (job #671039) | Cod sursa (job #1092351) | Cod sursa (job #2405317) | Cod sursa (job #119727)
Cod sursa(job #119727)
#include <cstdio>
#include <math.h>
#define Nmax 1000024
bool a[Nmax];
int x[Nmax], q[Nmax];;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
int n,w,max=0,k;
scanf("%d", &n);
for (int i=1;i<=n;++i)
{
scanf("%d", &w);
a[w]=1;
if(w>max) max = w;
}
long long ret,W;
ret = n-1;
ret *= n;
ret /= 2;
for (int i=2;i<=max;++i)
if (q[i] == 0)
{
for (int j=1;i*j<=max;++j)
++q[i*j];
W=i;W*=i;
if (W<=max)
{
w=W;
for (int j=1;w*j<=max;++j)
q[w*j]=-1;
}
}
for (int i=2;i<=max;++i) if (q[i]>=0)
{
for (int j=1;i*j<=max;++j)
if (a[i*j]) ++x[i];
W = x[i] - 1;
W *= x[i];
W /= 2;
if (q[i]&1) ret -= W; else ret += W;
}
printf("%lld\n", ret);
return 0;
}