






"""simple docstring"""






from __future__ import annotations

UpperCAmelCase_     :				List[str]         =				10



def       _A    (__a							)				-> Union[str, Any]:
    """simple docstring"""






    SCREAMING_SNAKE_CASE_   :						Optional[int]							=	1
    SCREAMING_SNAKE_CASE_   :						List[Any]							=	max(__lowerCAmelCase							)
    while placement <= max_digit:
        # declare and initialize empty buckets
        SCREAMING_SNAKE_CASE_   :						list[list]							=	[[] for _ in range(__lowerCAmelCase							)]
        # split list_of_ints between the buckets
        for i in list_of_ints:
            SCREAMING_SNAKE_CASE_   :						Optional[int]							=	int((i / placement) % RADIX							)
            buckets[tmp].append(__lowerCAmelCase							)
        # put each buckets' contents into list_of_ints
        SCREAMING_SNAKE_CASE_   :						Dict							=	0
        for b in range(__lowerCAmelCase							):
            for i in buckets[b]:
                SCREAMING_SNAKE_CASE_   :						Optional[int]							=	i
                a += 1
        # move to next
        placement *= RADIX
    return list_of_ints


if __name__ == "__main__":
  import doctest

  doctest.testmod()














"""simple docstring"""






from math import isqrt



def       _A    (__a							)				-> list[int]:
    """simple docstring"""






    SCREAMING_SNAKE_CASE_   :						Optional[Any]							=	[True] * max_number
    for i in range(2					,       isqrt(max_number - 1							) + 1							):
        if is_prime[i]:
            for j in range(i**2					,       __a					,       __a							):
                SCREAMING_SNAKE_CASE_   :						Tuple							=	False

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



def       _A    (__a = 10**8							)				-> int:
    """simple docstring"""






    SCREAMING_SNAKE_CASE_   :						Any							=	calculate_prime_numbers(max_number // 2							)

    SCREAMING_SNAKE_CASE_   :						List[str]							=	0
    SCREAMING_SNAKE_CASE_   :						Any							=	0
    SCREAMING_SNAKE_CASE_   :						List[str]							=	len(__a							) - 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() = }''')


