




"""simple docstring"""







from math import isqrt

def 						snake_case__       (					_lowerCamelCase				)			->list[int]:






		"""simple docstring"""


		__lowercase				:		List[Any]												=				[True] * max_number
		for i in range(2,  isqrt(max_number - 1				) + 1				):
				if is_prime[i]:
						for j in range(i**2,  _lowerCamelCase,  _lowerCamelCase				):
								__lowercase				:		Dict												=				False

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

def 						snake_case__       (					_lowerCamelCase = 10**8				)			->int:






		"""simple docstring"""


		__lowercase				:		List[str]												=				calculate_prime_numbers(max_number // 2				)

		__lowercase				:		Any												=				0
		__lowercase				:		Any												=				0
		__lowercase				:		Tuple												=				len(_lowerCamelCase				) - 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() = }""")






"""simple docstring"""







def 						snake_case__       (					_lowerCamelCase				)			->list:






		"""simple docstring"""


		__lowercase				:		Optional[int]												=				[0] * len(_lowerCamelCase				)

		for i in range(1,  len(_lowerCamelCase				)				):
				# use last results for better performance - dynamic programming
				__lowercase				:		Optional[Any]												=				prefix_result[i - 1]
				while j > 0 and input_string[i] != input_string[j]:
						__lowercase				:		List[str]												=				prefix_result[j - 1]

				if input_string[i] == input_string[j]:
						j += 1
				__lowercase				:		Any												=				j

		return prefix_result

def 						snake_case__       (					_lowerCamelCase				)			->int:






		"""simple docstring"""


		return max(prefix_function(_lowerCamelCase				)				)


if __name__ == "__main__":
						import doctest

						doctest.testmod()
