Pagini recente » Cod sursa (job #3146945) | Cod sursa (job #1329726) | Cod sursa (job #647627) | Cod sursa (job #2353065) | Cod sursa (job #951104)
Cod sursa(job #951104)
#include<fstream>
#include<bitset>
#include<algorithm>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
#define maxn 1000001
bitset<maxn> ok ;
long long v[maxn] ;
long long N, lim ;
long long sol ;
int main()
{
fin >> N ;
sol = N * ( N - 1 ) / 2 ;
while( N-- )
{
long long x ;
fin >> x ;
ok[x] = 1 ;
lim = max( lim, x ) ;
}
for(long long i = 2; i <= lim; ++i )
if( v[i] == 0 )
for(long long j = i; j <= lim; j += i )
++v[j] ;
for(long long i = 2; i * i <= lim; ++i )
for(long long j = i * i; j <= lim; j += i * i )
v[j] = 0 ;
for(long long i = 2; i <= lim; ++i )
{
if( v[i] )
{
long long nr = 0 ;
long long semn ;
for(long long j = i; j <= lim; j += i )
if( ok[j] )
++nr ;
if( v[i] % 2 )
semn = -1 ;
else
semn = 1 ;
sol += semn * nr * ( nr - 1 ) / 2 ;
}
}
fout << sol ;
return 0 ;
}