
'''simple docstring'''







def    UpperCAmelCase_						(__a :       List[str]					,      __a :       str					):






   """simple docstring"""

   _a							:      int     =  len(__a					)
   _a							:      List[Any]     =  [[False] * (required_sum + 1) for _ in range(arr_len + 1					)]

   # for each arr value, a sum of zero(0) can be formed by not taking any element
   # hence True/1
   for i in range(arr_len + 1					):
      _a							:      Dict     =  True

   # sum is not zero and set is empty then false
   for i in range(1					,      required_sum + 1					):
      _a							:      Dict     =  False

   for i in range(1					,      arr_len + 1					):
      for j in range(1					,      required_sum + 1					):
         if arr[i - 1] > j:
            _a							:      Union[str, Any]     =  subset[i - 1][j]
         if arr[i - 1] <= j:
            _a							:      Any     =  subset[i - 1][j] or subset[i - 1][j - arr[i - 1]]

   return subset[arr_len][required_sum]


if __name__ == "__main__":
  import doctest

  doctest.testmod()




"""simple docstring"""


from math import isqrt






def      __UpperCAmelCase       (      lowercase		):







  """simple docstring"""
  _UpperCAmelCase    			=   [True] * max_number
  for i in range(2 ,isqrt(max_number - 1		) + 1		):
    if is_prime[i]:
      for j in range(i**2 ,lowercase ,lowercase		):
        _UpperCAmelCase    			=   False

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






def      __UpperCAmelCase       (      lowercase = 10**8		):







  """simple docstring"""
  _UpperCAmelCase    			=   calculate_prime_numbers(max_number // 2		)

  _UpperCAmelCase    			=   0
  _UpperCAmelCase    			=   0
  _UpperCAmelCase    			=   len(lowercase		) - 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() = }''')
