





from math import isqrt






def 	lowerCamelCase_		(							_UpperCamelCase					)						->		list[int]:






				"""simple docstring"""


				snake_case_		:       int           =    [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					):
																snake_case_		:       List[Any]           =    False

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






def 	lowerCamelCase_		(							_UpperCamelCase = 10**8					)						->		int:






				"""simple docstring"""


				snake_case_		:       Tuple           =    calculate_prime_numbers(max_number // 2					)

				snake_case_		:       Optional[Any]           =    0
				snake_case_		:       Tuple           =    0
				snake_case_		:       List[str]           =    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() = }''')


'''simple docstring'''

def        UpperCAmelCase_ (  lowerCamelCase_			):







 """simple docstring"""


 lowerCAmelCase__     :   str     		=	len(lowerCamelCase_			)
 lowerCAmelCase__     :   Optional[Any]     		=	len(matrix[0]			)
 lowerCAmelCase__     :   Any     		=	min(lowerCamelCase_      ,			lowerCamelCase_			)

 for row in range(lowerCamelCase_			):
  # Check if diagonal element is not zero
  if matrix[row][row] != 0:
   # Eliminate all the elements below the diagonal
   for col in range(row + 1      ,			lowerCamelCase_			):
    lowerCAmelCase__     :   Tuple     		=	matrix[col][row] / matrix[row][row]
    for i in range(lowerCamelCase_      ,			lowerCamelCase_			):
     matrix[col][i] -= multiplier * matrix[row][i]
  else:
   # Find a non-zero diagonal element to swap rows
   lowerCAmelCase__     :   Dict     		=	True
   for i in range(row + 1      ,			lowerCamelCase_			):
    if matrix[i][row] != 0:
     lowerCAmelCase__		,     lowerCAmelCase__     :   Optional[Any]     		=	matrix[i], matrix[row]
     lowerCAmelCase__     :   Optional[Any]     		=	False
     break
   if reduce:
    rank -= 1
    for i in range(lowerCamelCase_			):
     lowerCAmelCase__     :   Union[str, Any]     		=	matrix[i][rank]

            # Reduce the row pointer by one to stay on the same row
   row -= 1

 return rank


if __name__ == "__main__":
     import doctest

     doctest.testmod()





