





import math




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

       UpperCamelCase_ 							=	3

       while i <= int(math.sqrt(UpperCamelCase_	)	):
              if n % i == 0:
                     count += 1
                     while n % i == 0:
                            UpperCamelCase_ 							=	int(n / i	)
              UpperCamelCase_ 							=	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}''')




def      a__	(						UpperCAmelCase				:     list     )    ->		list:
  UpperCAmelCase			:				Tuple										=					len(UpperCAmelCase     )

  # Set the gap value to be decreased by a factor of 1.3
  # after each iteration
  UpperCAmelCase			:				Optional[Any]										=					1.3

  # Continue sorting until the gap is 1
  while gap > 1:
    # Decrease the gap value
    UpperCAmelCase			:				int										=					int(gap / shrink     )

    # Sort the elements using insertion sort
    for i in range(UpperCAmelCase							,					len(UpperCAmelCase     )     ):
      UpperCAmelCase			:				Union[str, Any]										=					collection[i]
      UpperCAmelCase			:				List[Any]										=					i
      while j >= gap and collection[j - gap] > temp:
        UpperCAmelCase			:				int										=					collection[j - gap]
        j -= gap
      UpperCAmelCase			:				List[Any]										=					temp

  return collection


if __name__ == "__main__":
     import doctest

     doctest.testmod()





