Pagini recente » Cod sursa (job #2102340) | Cod sursa (job #493806) | Cod sursa (job #806945) | Cod sursa (job #268554) | Cod sursa (job #2181569)
#include<fstream>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
const int DIM = 16;
int Cnt, Sign, N, P[DIM + 5], F[DIM + 5];
long long Sol;
int main(){
fin >> N;
for( int i = 1; i <= N; i++ ){
int x; fin >> x;
F[x] = 1;
}
for( int i = 2; i <= DIM; i++ ){
if( P[i] != 0 )
continue;
P[i] = 1;
for( int j = i + i ; j <= DIM; j += i )
P[j]++;
}
for( int i = 2; i * i <= DIM; i++ )
for( int j = i * i; j <= DIM; j += i * i )
P[j] = 0;
Sol = 1LL * N * (N - 1) / 2;
for( int i = 2; i <= DIM; i++ ){
if( P[i] == 0 )
continue;
Cnt = 0; Sign = ( ( P[i] & 1 ) == 1 ) ? -1 : 1;
for( int j = i; j <= DIM; j += i )
Cnt += F[j];
Sol += 1LL * Sign * Cnt * (Cnt - 1) / 2;
}
fout << Sol << "\n";
return 0;
}