Pagini recente » Cod sursa (job #453164) | Cod sursa (job #2132121) | Cod sursa (job #2774357) | Cod sursa (job #1817716) | Cod sursa (job #1410509)
#include<fstream>
#include<bitset>
using namespace std;
int n, i, j, maxim, x, u, u1;
long long sum;
bitset<1000001> c, f;
int s[1000001], p[1000001], nr[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);
}
u = 1;
s[1] = 1;
for(i = 2; i <= maxim; i++){
for(j = i; j <= maxim; j += i){
if(f[j] == 1){
p[i]++;
}
if(c[i] == 0 && i != j){
c[j] = 1;
}
}
u1 = u;
for(j = 1; j <= u1; j++){
u++;
s[u] = s[j] * i;
nr[u] = nr[j] + 1;
if(s[u] <= maxim){
if(nr[u] % 2 == 1){
sum += (p[s[u]] - 1) * 1LL * p[s[u]] / 2;
}
else{
sum -= (p[s[u]] - 1) * 1LL * p[s[u]] / 2;
}
}
else{
u--;
}
}
}
sum = (n - 1) * n / 2 - sum;
fout<< sum <<"\n";
return 0;
}