Pagini recente » Cod sursa (job #2828592) | Cod sursa (job #744810) | Cod sursa (job #637242) | Cod sursa (job #2578662) | Cod sursa (job #114352)
Cod sursa(job #114352)
#include <stdio.h>
const int N_MAX = 100010;
const int V_MAX = 1000010;
int N, MAX = 0;
int x[V_MAX], is[V_MAX];
int fact[] = {2, 3, 5, 7, 11, 13, 17, 19};
int main()
{
freopen("pairs.in", "r", stdin);
#ifndef _SCREEN_
freopen("pairs.out", "w", stdout);
#endif
int i, rez = 0, val, j;
scanf("%d\n", &N);
for (i = 1; i <= N; i ++) {
scanf("%d\n", &val);
if (val > MAX) MAX = val;
is[val] = 1;
}
for (i = 2; i <= MAX; i ++) {
for (j = i; j <= MAX; j += i) {
if (is[j]) x[i] ++;
}
}
int comb, mx = 1 << 7, fac, nr;
for (comb = 1; comb < mx; comb ++) {
fac = 1, nr = 0;
for (i = 0; i < 7; i ++) {
if (comb & (1 << i)) fac *= fact[i], nr ++;
}
if (nr % 2 == 1) rez += (x[fac] * (x[fac] - 1) / 2);
else rez -= (x[fac] * (x[fac] - 1) / 2);
}
printf("%d\n", (N * (N - 1) / 2) - rez);
return 0;
}