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