# This is the module that test_patching.py uses to test patch_submodule()

import os  # noqa: this is just for tests
import os as renamed_os  # noqa: this is just for tests
from os import path  # noqa: this is just for tests
from os import path as renamed_path  # noqa: this is just for tests
from os.path import join  # noqa: this is just for tests
from os.path import join as renamed_join  # noqa: this is just for tests


__lowerCamelCase      :			Optional[Any]							       =		open  # noqa: we just need to have a builtin inside this module to test it properly

from math import isqrt



def      __SCREAMING_SNAKE_CASE  ( __UpperCamelCase   :	int     )							-> list[int]:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__      							=				[True] * max_number
  for i in range(2			,					isqrt(max_number - 1     ) + 1     ):
    if is_prime[i]:
      for j in range(i**2			,					__UpperCamelCase			,					__UpperCamelCase     ):
        SCREAMING_SNAKE_CASE__      							=				False

  return [i for i in range(2			,					__UpperCamelCase     ) if is_prime[i]]



def      __SCREAMING_SNAKE_CASE  ( __UpperCamelCase   :	int = 10**8     )							-> int:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__      							=				calculate_prime_numbers(max_number // 2     )

  SCREAMING_SNAKE_CASE__      							=				0
  SCREAMING_SNAKE_CASE__      							=				0
  SCREAMING_SNAKE_CASE__      							=				len(__UpperCamelCase     ) - 1
  while left <= right:
    while prime_numbers[left] * prime_numbers[right] >= max_number:
      right -= 1
    semiprimes_count += right - left + 1
    left += 1

  return semiprimes_count


if __name__ == "__main__":
   print(F"""{solution() = }""")
