


def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE = 100_0000 )->  int:




      """simple docstring"""

      snake_case_	=				set(range(3 , SCREAMING_SNAKE_CASE , 2 ) )
      primes.add(2 )
      for p in range(3 , SCREAMING_SNAKE_CASE , 2 ):
            if p not in primes:
                  continue
            primes.difference_update(set(range(p * p , SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE ) ) )

      snake_case_	=				[float(SCREAMING_SNAKE_CASE ) for n in range(limit + 1 )]

      for p in primes:
            for n in range(SCREAMING_SNAKE_CASE , limit + 1 , SCREAMING_SNAKE_CASE ):
                  phi[n] *= 1 - 1 / p

      return int(sum(phi[2:] ) )


if __name__ == "__main__":
   print(f'''{solution() = }''')



def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )->  int:




      """simple docstring"""

      return x if y == 0 else greatest_common_divisor(SCREAMING_SNAKE_CASE , x % y )






def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )->  int:




      """simple docstring"""

      return (x * y) // greatest_common_divisor(SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )






def 	__lowerCAmelCase   (SCREAMING_SNAKE_CASE = 20 )->  int:




      """simple docstring"""

      snake_case_	=				1
      for i in range(1 , n + 1 ):
            snake_case_	=				lcm(SCREAMING_SNAKE_CASE , SCREAMING_SNAKE_CASE )
      return g


if __name__ == "__main__":
   print(f'''{solution() = }''')