
"""simple docstring"""




def lowercase_  (   _snake_case   ,_snake_case						):
							SCREAMING_SNAKE_CASE__						:       Dict           =   len(_snake_case						)
							SCREAMING_SNAKE_CASE__						:       Tuple           =   [[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						):
														SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   True

							# sum is not zero and set is empty then false
							for i in range(1   ,required_sum + 1						):
														SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   False

							for i in range(1   ,arr_len + 1						):
														for j in range(1   ,required_sum + 1						):
																					if arr[i - 1] > j:
																												SCREAMING_SNAKE_CASE__						:       List[str]           =   subset[i - 1][j]
																					if arr[i - 1] <= j:
																												SCREAMING_SNAKE_CASE__						:       Optional[int]           =   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"""




import math
import unittest

def lowercase_  (   _snake_case						):
							assert isinstance(_snake_case   ,_snake_case						) and (
							    number >= 0
							), "'number' must been an int and positive"

							if 1 < number < 4:
														# 2 and 3 are primes
														return True
							elif number < 2 or number % 2 == 0 or number % 3 == 0:
														# Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
														return False

							# All primes number are in format of 6k +/- 1
							for i in range(5   ,int(math.sqrt(_snake_case						) + 1						)   ,6						):
														if number % i == 0 or number % (i + 2) == 0:
																					return False
							return True



class 	lowerCAmelCase_						(unittest.TestCase  ):


				"""simple docstring"""



				def 	__magic_name__    (self    )					->		Dict:



											"""simple docstring"""




											self.assertTrue(is_prime(2    )    )
											self.assertTrue(is_prime(3    )    )
											self.assertTrue(is_prime(5    )    )
											self.assertTrue(is_prime(7    )    )
											self.assertTrue(is_prime(11    )    )
											self.assertTrue(is_prime(13    )    )
											self.assertTrue(is_prime(17    )    )
											self.assertTrue(is_prime(19    )    )
											self.assertTrue(is_prime(23    )    )
											self.assertTrue(is_prime(29    )    )



				def 	__magic_name__    (self    )					->		List[Any]:



											"""simple docstring"""




											with self.assertRaises(SCREAMING_SNAKE_CASE__    ):
																		is_prime(-19    )
											self.assertFalse(
											    is_prime(0    )   ,       """Zero doesn't have any positive factors, primes must have exactly two."""   ,       )
											self.assertFalse(
											    is_prime(1    )   ,       """One only has 1 positive factor, primes must have exactly two."""   ,       )
											self.assertFalse(is_prime(2 * 2    )    )
											self.assertFalse(is_prime(2 * 3    )    )
											self.assertFalse(is_prime(3 * 3    )    )
											self.assertFalse(is_prime(3 * 5    )    )
											self.assertFalse(is_prime(3 * 5 * 7    )    )


if __name__ == "__main__":
					unittest.main()




