Pagini recente » Cod sursa (job #2107696) | Cod sursa (job #705081) | Cod sursa (job #893105) | Cod sursa (job #665829) | Cod sursa (job #2577403)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
long long n;
int nrdiv[1000005], maxnr;
bool apare[1000005], a[1000005];
void citire() {
fin >> n;
int x;
for(int i = 1; i <= n; i++) {
fin >> x;
apare[x] = 1;
maxnr = max(maxnr, x);
}
}
void solve() {
long long res = n*(n-1)/2;
for(int i = 2; i <= maxnr; i++) {
if(!nrdiv[i]) {
for(int j = i; j <= maxnr; j += i)
nrdiv[j]++;
for(int j = i*i; j <= maxnr; j += i*i)
a[j] = 1;
}
if(!a[i]) {
long long scad = 0;
for(int j = i; j <= maxnr; j += i)
scad += apare[j];
if(nrdiv[i]%2)
res -= scad*(scad-1)/2;
else
res += scad*(scad-1)/2;
}
}
fout << res;
}
int main() {
citire();
solve();
}