Pagini recente » Cod sursa (job #1378240) | Cod sursa (job #1605783) | Cod sursa (job #1005361) | Cod sursa (job #2028829) | Cod sursa (job #1744413)
#include <cstdio>
#include <algorithm>
using namespace std;
int f[1000005], d[1000005];
int main(){
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
int n, i, maxim = 0, nr, x, j;
long long ans = 0;
scanf("%d", &n);
for (i = 1; i <= n; i ++){
scanf("%d", &x);
f[x] = 1;
maxim = max(x, maxim);
}
for (i = 2; i <= maxim; i ++)
if (!d[i])
for (j = i; j <= maxim; j += i)
d[j] ++;
for (i = 2; i <= maxim; i ++)
for (j = i * i; j <= maxim; j += i * i)
d[j] = -1;
for (i = 2; i <= maxim; i ++){
if (d[i] != -1){
nr = 0;
for (j = i; j <= maxim; j += i)
if (f[j])
nr ++;
if (d[i] & 1)
ans -= 1LL * nr * (nr - 1) / 2;
else
ans += 1LL * nr * (nr - 1) / 2;
}
}
printf("%lld\n", 1LL * n * (n - 1) / 2 + ans);
return 0;
}