






"""simple docstring"""






def       _A    (__a					,       __a							)				-> str:
    """simple docstring"""






    if not (isinstance(__a					,       __a							) and isinstance(__a					,       __a							)):
        raise ValueError('''longest_common_substring() takes two strings for inputs'''							)

    SCREAMING_SNAKE_CASE_   :						str							=	len(__a							)
    SCREAMING_SNAKE_CASE_   :						Dict							=	len(__a							)

    SCREAMING_SNAKE_CASE_   :						Optional[Any]							=	[[0] * (texta_length + 1) for _ in range(texta_length + 1							)]
    SCREAMING_SNAKE_CASE_   :						List[Any]							=	0
    SCREAMING_SNAKE_CASE_   :						List[Any]							=	0

    for i in range(1					,       texta_length + 1							):
        for j in range(1					,       texta_length + 1							):
            if texta[i - 1] == texta[j - 1]:
                SCREAMING_SNAKE_CASE_   :						str							=	1 + dp[i - 1][j - 1]
                if dp[i][j] > ans_length:
                    SCREAMING_SNAKE_CASE_   :						Union[str, Any]							=	i
                    SCREAMING_SNAKE_CASE_   :						Optional[int]							=	dp[i][j]

    return texta[ans_index - ans_length : ans_index]


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() = }''')


