Pagini recente » Cod sursa (job #2525364) | Cod sursa (job #1248452) | Cod sursa (job #3195578) | Cod sursa (job #2579193) | Cod sursa (job #119665)
Cod sursa(job #119665)
#include <cstdio>
#include <math.h>
#define Nmax 1000024
bool a[Nmax];
int x[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)
{
w = i; k = 0;
/*
for (int j=2;j<=sqrt(w);;++j)
if (w%j==0)
{
++k;
w/=j;
if (w%j==0) k = -1;
if (k<0) break;
}
*/
if (w > 1) ++k;
if (k>0)
{
for (int j=1;i*j<=max;++j)
if (a[i*j]) ++x[i];
if (x[i] > 1)
{
W = x[i]-1;
W *= x[i];
W /= 2;
if (k&1) ret -= W; else ret += W;
}
}
}
printf("%lld\n", ret);
return 0;
}