fork download
  1. #include <type_traits>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. constexpr auto MAX = 100000000 ; // 10^8
  6. using int_type = std::remove_const< decltype(MAX) >::type ;
  7.  
  8. std::vector<int_type> prime_numbers()
  9. {
  10. const int_type SZ = MAX / 2 + 1 ;
  11. std::vector<bool> sieve( SZ, true ) ;
  12. for( int_type i = 2 ; i < SZ ; ++i ) if( sieve[i] )
  13. for( int_type j = i+i ; j < SZ ; j += i ) sieve[j] = false ;
  14.  
  15. std::vector<int_type> result ;
  16. for( int_type i = 2 ; i < SZ ; ++i ) if( sieve[i] ) result.push_back(i) ;
  17. return result ;
  18. }
  19.  
  20. int main()
  21. {
  22. auto primes = prime_numbers() ;
  23.  
  24. int_type count = 0 ;
  25.  
  26. for( auto p : primes )
  27. {
  28. for( auto p2 : primes )
  29. {
  30. if( p*p2 > MAX ) break ;
  31. if( p2 >= p ) ++count ;
  32. }
  33. }
  34.  
  35. std::cout << count << '\n' ; // 17427258
  36. }
  37.  
Success #stdin #stdout 1.66s 2984KB
stdin
Standard input is empty
stdout
17427258