

"""simple docstring"""




def 	UpperCAmelCase__   (				A__   )      ->      list:




   """simple docstring"""
   lowerCamelCase__						=			[0] * len(A__   )

   for i in range(1	,    len(A__   )   ):
      # use last results for better performance - dynamic programming
      lowerCamelCase__						=			prefix_result[i - 1]
      while j > 0 and input_string[i] != input_string[j]:
         lowerCamelCase__						=			prefix_result[j - 1]

      if input_string[i] == input_string[j]:
         j += 1
      lowerCamelCase__						=			j

   return prefix_result



def 	UpperCAmelCase__   (				A__   )      ->      int:




   """simple docstring"""
   return max(prefix_function(A__   )   )


if __name__ == "__main__":
     import doctest

     doctest.testmod()







"""simple docstring"""




def 	UpperCAmelCase__   (				A__   )      ->      list[int]:




   """simple docstring"""

   if num <= 0:
      raise ValueError("Input must be a positive integer"   )

   lowerCamelCase__						=			[True] * (num + 1)

   lowerCamelCase__						=			2
   while p * p <= num:
      if primes[p]:
         for i in range(p * p	,    num + 1	,    A__   ):
            lowerCamelCase__						=			False
      p += 1

   return [prime for prime in range(2	,    num + 1   ) if primes[prime]]


if __name__ == "__main__":
     import doctest

     doctest.testmod()

     SCREAMING_SNAKE_CASE_     :			Optional[Any]	  =			int(input('''Enter a positive integer: ''').strip())
     print(prime_sieve_eratosthenes(user_num))




