Pagini recente » Cod sursa (job #1781016) | Cod sursa (job #1067469) | Cod sursa (job #2911138) | Cod sursa (job #1665956) | Cod sursa (job #2303719)
#include <bits/stdc++.h>
#define N 100005
using namespace std ;
ifstream fin("pairs.in") ;
ofstream fout("pairs.out") ;
bitset<10*N> bt ;
bitset<10*N> vz ;
int dv[10*N] , t[N] ;
int main()
{
int n , i , j , mx=0 , q , sol = 0 ;
fin >> n ;
for ( i = 1 ; i <= n ; i++ )
{
fin >> t[i] ;
mx = max(mx,t[i]) ;
bt[t[i]] = 1 ;
}
for ( i = 2 ; i <= mx ; i++ )
{
if ( vz[i] == 1 )
continue ;
dv[i]++ ;
for ( j = 2*i ; j <= mx ; j = j+i )
vz[j] = 1 ;
}
for ( i = 2 ; i <= mx ; i++ )
{
if ( dv[i] )
{
for ( j = 1 ; j*i <= mx ; j++ )
if ( vz[j] == 0 && i%j != 0 )
dv[i*j]++ ;
}
}
for ( i = 2 ; i <= mx ; i++ )
{
if ( dv[i] )
{
q = 0 ;
for ( j = 1 ; i*j <= mx ; j++ )
if ( bt[i*j] == 1 )
q++ ;
q = q*(q-1)/2 ;
if ( dv[i]%2== 1 )
sol = sol + q ;
else
sol = sol - q ;
}
}
fout << n*(n-1)/2 - sol ;
}