Pagini recente » Cod sursa (job #2234990) | Cod sursa (job #1735863) | Cod sursa (job #895942) | Cod sursa (job #1029336) | Cod sursa (job #2676735)
#include <bits/stdc++.h>
#define ll long long
#define LMAX 1000005
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
ll n, perechi, v[100005], fv[LMAX], fv2[LMAX], fv3[LMAX];
std::vector<ll> prim;
void ciur() {
for (ll i = 2; i * i <= LMAX; i += 2) {
if (fv[i])
continue;
prim.push_back(i);
for (ll j = i * i; j <= LMAX; j += i)
fv[j] = 1;
if (i == 2)
--i;
}
return;
}
int main() {
ciur();
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
ll divs = 0;
for (int j = 0; j < prim.size() && prim[j] <= v[i]; ++j) {
if (v[i] % prim[j] != 0)
continue;
++divs;
perechi += fv2[prim[j]];
++fv2[prim[j]];
}
perechi -= fv3[v[i]] * divs;
++fv3[v[i]];
}
fout << perechi;
return 0;
}