Pagini recente » Cod sursa (job #1781380) | Cod sursa (job #2244345) | Cod sursa (job #1170530) | Cod sursa (job #2837091) | Cod sursa (job #1410554)
#include<fstream>
#include<bitset>
using namespace std;
int n, i, j, maxim, x, nr;
long long sum;
bitset<1000001> f, ok;
int v[1000001];
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> x;
f[x] = 1;
maxim = max(maxim, x);
}
for(i = 2; i <= maxim; i++){
if(ok[i] == 0){
nr = 0;
for(j = i; j <= maxim; j += i){
if(f[j] == 1){
nr++;
}
if(j % (i * i) == 0){
ok[j] = 1;
}
if(ok[j] == 0 && v[i] == 0){
v[j]++;
}
}
if(v[i] % 2 == 1){
sum += nr * 1LL * (nr - 1) / 2;
}
else{
sum -= nr * 1LL * (nr - 1) / 2;
}
}
}
sum = (n - 1) * 1LL * n / 2 - sum;
fout<< sum <<"\n";
return 0;
}