
import math

def a__   (	UpperCAmelCase__ ):






  '''simple docstring'''





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

  __magic_name__    					=	3

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

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

  if n > 2:
    count += 1
  return count


if __name__ == "__main__":
    __lowerCAmelCase      :					Any   	=       51242183
    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}''')



from itertools import compress, repeat
from math import ceil, sqrt

def a__   (	A_ ):






  '''simple docstring'''





  if num <= 2:
    return []
  if num == 3:
    return [2]

  # Odd sieve for numbers in range [3, num - 1]
  __magic_name__    					=	bytearray(b"""\x01""" ) * ((num >> 1) - 1)

  for i in range(3,					int(sqrt(A_ ) ) + 1,					2 ):
    if sieve[(i >> 1) - 1]:
      __magic_name__    					=	i**2
      __magic_name__    					=	repeat(
          0,					ceil((num - i_squared) / (i << 1) ) )

  return [2] + list(compress(range(3,					A_,					2 ),					A_ ) )


if __name__ == "__main__":
    import doctest

    doctest.testmod()

