Pagini recente » Profil SeekHunt1334 | Cod sursa (job #2147024) | Cod sursa (job #2211070) | Cod sursa (job #202184) | Cod sursa (job #486261)
Cod sursa(job #486261)
#include <cstdio>
#define MAX 1000005
int nr[MAX], n, i, j, x;
char P[MAX], p[MAX], viz[MAX];
long long sol;
int main () {
freopen ("pairs.in", "r", stdin);
freopen ("pairs.out", "w", stdout);
scanf ("%d", &n);
for (i = 1; i <= n; i++) {
scanf ("%d", &x);
nr[x]++;
}
sol = 1LL * n * (n-1) / 2;
for (i = 1; i < MAX; i++) {
for (j = 2 * i; j < MAX; j += i)
nr[j] += nr[i];
if (!P[i]) {
p[i] = 1;
for (j = 2 * i; j < MAX; j += i) {
P[j] = 1, p[j] ^= 1;
if ((j/2) % 2 == 0) viz[j] = 1;
}
}
if (viz[j] == 1) continue;
if (p[i])
sol -= 1LL * nr[i] * (nr[i]-1) / 2;
else
sol += 1LL * nr[i] * (nr[i]-1) / 2;
}
printf ("%lld", sol);
return 0;
}