




from timeit import timeit

def  SCREAMING_SNAKE_CASE							(       __UpperCamelCase)      ->					int:
     if number < 0:
          raise ValueError("the value of input must not be negative")
     a     =				0
     while number:
          number &= number - 1
          result += 1
     return result

def  SCREAMING_SNAKE_CASE							(       __UpperCamelCase)      ->					int:
     if number < 0:
          raise ValueError("the value of input must not be negative")
     a     =				0
     while number:
          if number % 2 == 1:
               result += 1
          number >>= 1
     return result

def  SCREAMING_SNAKE_CASE							(       )      ->					None:

     def do_benchmark(__UpperCamelCase) -> None:
          a     =				"import __main__ as z"
          print(f'''Benchmark when {number = }:''')
          print(f'''{get_set_bits_count_using_modulo_operator(__UpperCamelCase) = }''')
          a     =				timeit("z.get_set_bits_count_using_modulo_operator(25)"		, setup=__UpperCamelCase)
          print(f'''timeit() runs in {timing} seconds''')
          print(f'''{get_set_bits_count_using_brian_kernighans_algorithm(__UpperCamelCase) = }''')
          a     =				timeit(
              "z.get_set_bits_count_using_brian_kernighans_algorithm(25)"		, setup=__UpperCamelCase		, )
          print(f'''timeit() runs in {timing} seconds''')

     for number in (25, 37, 58, 0):
          do_benchmark(__UpperCamelCase)
          print()


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   benchmark()







import math
import unittest

def  SCREAMING_SNAKE_CASE							(       __UpperCamelCase)      ->					bool:
     assert isinstance(__UpperCamelCase		, __UpperCamelCase) 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(__UpperCamelCase) + 1)		, 6):
          if number % i == 0 or number % (i + 2) == 0:
               return False
     return True




class       a__	( unittest.TestCase				):







     def       lowerCAmelCase_    (     self			)  ->   List[str]:



          '''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       lowerCAmelCase_    (     self			)  ->   Tuple:



          '''simple docstring'''



          with self.assertRaises(A			):
               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()

