Pagini recente » Cod sursa (job #972498) | Cod sursa (job #961809) | Cod sursa (job #1298647) | Cod sursa (job #823926) | Cod sursa (job #1410825)
#include<fstream>
#include<bitset>
using namespace std;
int n, i, j, nr, x, maxim;
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(v[i] == 0){
nr = f[i];
for(j = i + i; j <= maxim; j += i){
nr += f[j];
v[j]++;
if(j % (i * i) == 0){
ok[j] = 1;
}
}
sum += nr * 1LL * (nr - 1) / 2;
}
else{
if(ok[i] == 0){
nr = 0;
for(j = i; j <= maxim; j += i){
nr += f[j];
}
if(v[i] % 2 == 1){
sum += nr * 1LL * (nr - 1) / 2;
}
else{
sum -= nr * 1LL * (nr - 1) / 2;
}
}
}
}
sum = n * 1LL * (n - 1) / 2 - sum;
fout<< sum <<"\n";
return 0;
}