Pagini recente » Cod sursa (job #2628582) | Cod sursa (job #1782062) | Cod sursa (job #404113) | Cod sursa (job #2705063) | Cod sursa (job #2314657)
#include <fstream>
#define max(a, b) (a > b ? a : b)
using namespace std;
ifstream fin ("pairs.in");
ofstream fout ("pairs.out");
int n, i, j, x, maxim, a[1000010], b[1000010], l;
long long v[100010][3], s;
int main(){
fin >> n;
for (i = 1; i <= n; ++i) {
fin >> x;
a[x] = 1;
maxim = max(maxim, x);
}
v[0][0] = 1;
for (i = 1; i <= n; ++i) {
v[i][0] = 1;
v[i][1] = v[i - 1][0] + v[i - 1][1];
v[i][2] = v[i - 1][1] + v[i - 1][2];
}
for (i = 2; i <= maxim; ++i) {
if (b[i] == 0) {
for (j = i; j <= maxim; j += i)
b[j]++;
}
}
for (i = 2; i * i <= maxim; ++i) {
for (j = i * i; j <= maxim; j += i * i) {
b[j] = 0;
}
}
for (i = 2; i <= maxim; ++i) {
if (b[i] > 0) {
l = 0;
for (j = i; j <= maxim; j += i)
l += a[j];
if (b[i] % 2 == 1) {
s = s + v[l][2];
} else {
s = s - v[l][2];
}
}
}
s = n * (n - 1) / 2 - s;
fout << s;
return 0;
}