






def 		A_			(		lowercase_	)							->int:







 """simple docstring"""

 if number != int(A__	):
  raise ValueError('factorial() only accepts integral values'	)
 if number < 0:
  raise ValueError('factorial() not defined for negative values'	)
 SCREAMING_SNAKE_CASE							  =						1
 for i in range(1					,       number + 1	):
  value *= i
 return value





def 		A_			(		lowercase_	)							->int:







 """simple docstring"""

 if not isinstance(A__					,       A__	):
  raise ValueError('factorial() only accepts integral values'	)
 if n < 0:
  raise ValueError('factorial() not defined for negative values'	)
 return 1 if n == 0 or n == 1 else n * factorial(n - 1	)


if __name__ == "__main__":
      import doctest

      doctest.testmod()

      __UpperCAmelCase      				=							int(input("Enter a positive integer: ").strip() or 0)
      print(f'factorial{n} is {factorial(n)}')








import math





def 		A_			(		lowercase_	)							->List[Any]:







 """simple docstring"""

 SCREAMING_SNAKE_CASE							  =						0
 if n % 2 == 0:
  count += 1
  while n % 2 == 0:
   SCREAMING_SNAKE_CASE							  =						int(n / 2	)
    # the n input value must be odd so that
    # we can skip one element (ie i += 2)

 SCREAMING_SNAKE_CASE							  =						3

 while i <= int(math.sqrt(lowercase_	)	):
  if n % i == 0:
   count += 1
   while n % i == 0:
    SCREAMING_SNAKE_CASE							  =						int(n / i	)
  SCREAMING_SNAKE_CASE							  =						i + 2

 # this condition checks the prime
 # number n is greater than 2

 if n > 2:
  count += 1
 return count


if __name__ == "__main__":
      __UpperCAmelCase      				=							5_1_2_4_2_1_8_3
      print(f'The number of distinct prime factors is/are {exact_prime_factor_count(n)}')
      print(f'The value of log(log(n)) is {math.log(math.log(n)):.4f}')




