Pagini recente » Cod sursa (job #1811201) | Cod sursa (job #2297978) | Cod sursa (job #1734977) | Cod sursa (job #1697402) | Cod sursa (job #1124647)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
typedef long long i64;
const int vmax= 1000000;
bool v[vmax+1], e[vmax+1], prime[vmax+1], p[vmax+1];
int main( ) {
i64 n, maxim= 0; fin>>n;
i64 sol= (i64)n*(n-1)/2, aux= 0;
for ( i64 i= 1; i<=n; ++i ) {
i64 x; fin>>x;
v[x]= 1;
maxim= max(maxim, x);
}
for ( i64 i= 2; i<=maxim; ++i ) {
if ( !prime[i] ) {
for ( i64 j= i; j<=maxim; j+= i ) {
prime[j]= 1, e[j]= 1-e[j];
if ( (j/i)%i==0 ) {
p[j]= 1;
}
}
}
}
for ( i64 i= 2; i<=maxim; ++i ) {
if ( !p[i] ) {
i64 x= 0;
for ( i64 j= i; j<=maxim; j+= i ) {
if ( v[j]==1 ) {
++x;
}
}
if ( e[i] ) {
aux= (i64)aux+x*(x-1)/2;
} else {
aux= (i64)aux-x*(x-1)/2;
}
}
}
sol-= aux;
fout<<sol<<"\n";
return 0;
}