'''simple docstring'''





import math


def 					__lowerCAmelCase			(  _A					):



							"""simple docstring"""


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

							_lowercase				=	3

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

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

							if n > 2:
														count += 1
							return count


if __name__ == "__main__":
				A_:      Optional[Any]        =			5124_2183
				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}''')



import math
from timeit import timeit


def 					__lowerCAmelCase			(  _A					):



							"""simple docstring"""


							_lowercase				=	0
							_lowercase				=	abs(_A					)
							while True:
														_lowercase				=	n // 10
														digits += 1
														if n == 0:
																					break
							return digits


def 					__lowerCAmelCase			(  _A					):



							"""simple docstring"""


							return 1 if n == 0 else math.floor(math.log(abs(_A					) ,10					) + 1					)


def 					__lowerCAmelCase			(  _A					):



							"""simple docstring"""


							return len(str(abs(_A					)					)					)


def 					__lowerCAmelCase			(  ):



							"""simple docstring"""


							from collections.abc import Callable

							def benchmark_a_function(_A ,_A					) -> None:
														_lowercase				=	f'''{func.__name__}({value})'''
														_lowercase				=	timeit(f'''__main__.{call}''' ,setup="""import __main__"""					)
														print(f'''{call}: {func(_A					)} -- {timing} seconds'''					)

							for value in (262_144, 1_125_899_906_842_624, 1_267_650_600_228_229_401_496_703_205_376):
														for func in (num_digits, num_digits_fast, num_digits_faster):
																					benchmark_a_function(_A ,_A					)
														print()


if __name__ == "__main__":
				import doctest

				doctest.testmod()
				benchmark()


