Pagini recente » Cod sursa (job #97936) | Cod sursa (job #2200214) | Cod sursa (job #1211208) | Cod sursa (job #953722) | Cod sursa (job #1417163)
#include <fstream>
#include <bitset>
#define DIM 1000000
#define LL long long
using namespace std;
ifstream fin ("pairs.in" );
ofstream fout("pairs.out");
int N, M, K, ok, minim, F[DIM];
int V[DIM*2], D[DIM], p, u;
int nr, k, B[DIM];
LL i, j, sum;
void SetUp(){
fin >> N;
for(i = 1; i <= N; i ++){
fin >> V[i];
F[V[i]] = 1;
}
return;
}
void CodeExpert(){
for(i = 2; i < DIM; i ++){
if(B[i] == 0){
if(F[i] == 0)
nr = 0;
else
nr = 1;
for(j = i + i; j < DIM; j += i){
B[j] ++;
if(F[j] == 1)
nr ++;
}
for(j = i * 1LL * i; j < DIM; j += i * i)
D[j] = 1;
/*
FARA PUTERI DE I
*/
sum += nr * 1LL * (nr-1) / 2;
}
else{
if(D[i] == 0){
nr = 0;
for(j = i; j < DIM; j += i)
if(F[j] == 1)
nr ++;
if(B[i] % 2 == 1)
sum += nr * 1LL * (nr - 1) / 2;
else
sum -= nr * 1LL * (nr - 1) / 2;
}
}
}
fout << N * 1LL * (N-1) / 2 - sum;
return;
}
int main(){
SetUp();
CodeExpert();
return 0;
}