Pagini recente » Cod sursa (job #77645) | Cod sursa (job #1980667) | Cod sursa (job #1515694) | Cod sursa (job #746284) | Cod sursa (job #2304978)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
int n, a[100100], st[100], vf;
ll freq[1000100], rs;
int main() {
in >> n;
for (int i = 1; i <= n; i++)
in >> a[i];
for (int i = 1; i <= n; i++)
for (int j = 1; j * j <= a[i]; j++)
if (a[i] % j == 0) {
freq[j]++;
if (j != a[i] / j)
freq[a[i] / j]++;
}
for (int i = 1; i <= n; i++) {
vf = 0;
for (int j = 2; j * j <= a[i]; j++) {
if (a[i] % j)
continue;
st[vf++] = j;
while (a[i] % j == 0)
a[i] /= j;
}
if (a[i] > 1)
st[vf++] = a[i];
for (int mask = 1; mask < (1 << vf); mask++) {
int num = 1, cnt = 0;
for (int bit = 0; bit < vf; bit++)
if (mask & (1 << bit)) {
num *= st[bit];
cnt++;
}
if (cnt & 1)
rs += freq[num] - 1LL;
else rs -= freq[num] - 1LL;
}
}
out << ((ll) n * ((ll) n - 1LL) - rs) / 2LL;
return 0;
}