Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 주어진 정수가 3의 거듭제곱인지 확인하는 방법 (True/False 반환)

주어진 변수가 3의 거듭제곱인지 확인해야 하는 경우, 정수를 매개변수로 받는 check_power_of_3라는 함수를 정의하면 됩니다. 이 함수는 나머지 연산자(%)와 몫 연산자(//)를 활용해 검사를 수행하고, 그 결과에 따라 True 또는 False를 반환합니다.

예제 코드

다음은 실제 동작을 보여주는 예제입니다.

def check_power_of_3(my_val):
   if (my_val == 0):
      return False
   while (my_val != 1):
      if (my_val % 3 != 0):
         return False
      my_val = my_val // 3

   return True

my_num = 81
print("확인할 숫자 : ")
print(my_num)
if(check_power_of_3(my_num)):
   print(my_num, '은(는) 3의 거듭제곱입니다.')
else:
   print(my_num, '은(는) 3의 거듭제곱이 아닙니다.')

실행 결과

확인할 숫자 :
81
81 은(는) 3의 거듭제곱입니다.

코드 설명

  • check_power_of_3라는 이름의 함수를 정의하고, 검사할 숫자를 매개변수로 전달받습니다.

  • 입력값이 0이면 3의 거듭제곱이 될 수 없으므로 False를 반환합니다.

  • 값이 1이 아닌 동안 반복문을 실행하며, 나머지 연산자(%)로 3으로 나눈 나머지가 0인지 확인합니다. 나머지가 0이 아니라면 False를 반환합니다.

  • 나머지가 0이라면 몫 연산자(//)를 사용해 값을 3으로 나누고 다시 검사를 진행합니다.

  • 모든 과정을 통과해 값이 1이 되면 True를 반환하여 3의 거듭제곱임을 의미합니다.

  • 함수 외부에서 검사할 숫자(여기서는 81)를 정의하고 콘솔에 출력합니다.

  • 해당 숫자를 인자로 전달하여 함수를 호출하고, 반환된 결과에 따라 적절한 메시지를 출력합니다.

참고 사항

이 알고리즘은 시간 복잡도가 O(log₃n)으로 효율적입니다. 또한 음수나 1 미만의 값도 자연스럽게 처리되며, 1은 3⁰ = 1이므로 True를 반환한다는 점도 기억해 두면 좋습니다.