Pagini recente » Cod sursa (job #2007514) | Cod sursa (job #962392) | Cod sursa (job #1792893) | Cod sursa (job #2247181) | Cod sursa (job #1567200)
#include <cstdio>
using namespace std;
const int nmx = 1000002;
int n;
bool c[nmx];
int nrp[nmx];
int nrpn[nmx];
void ciur() {
nrp[0] = 1;
nrp[1] = 2;
for(int i = 3; i <= nmx; i += 2)
if(not c[i]) {
nrp[++nrp[0]] = i;
for(int j = 2 * i; j <= nmx; j += i)
c[j] = true;
}
}
int main() {
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
ciur();
scanf("%d", &n);
int nr,maxx = -1;
for(int i = 1; i <= n; ++i) {
scanf("%d", &nr);
for(int p = 1; nrp[p] <= nr; ++p)
if(nr % nrp[p] == 0) {
if(p > maxx)
maxx = p;
++ nrpn[p];
while(nr % nrp[p] == 0)
nr /= nrp[p];
}
}
long long total = (n * (n - 1)) / 2;
for(int i = 1; i <= maxx; ++i)
if(nrpn[i])
total -= (nrpn[i] * (nrpn[i] - 1)) / 2;
printf("%lld\n", total);
return 0;
}