Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

주어진 숫자가 d의 거듭제곱인지 확인하십시오. 여기서 d는 Python에서 2의 거듭제곱입니다.

<시간/>

숫자 n과 다른 값 x가 있다고 가정하고 x의 거듭제곱인지 아닌지 확인해야 합니다. 여기서 x는 2의 거듭제곱입니다.

따라서 입력이 n =32768 x =32와 같으면 n이 x^3이므로 출력은 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 메인 방법에서 다음을 수행하십시오 -
  • cnt :=0
  • n이 0이 아니고 (n AND (n - 1))이 0과 같으면
    • n> 1일 때 수행
      • n =n/2
      • cnt :=cnt + 1
    • return cnt mod(log c base 2)는 0과 동일합니다.
  • 거짓을 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def find_pow_of_2(n):
   return (1 + find_pow_of_2(n / 2)) if (n > 1) else 0
def solve(n, c):
   cnt = 0
   if n and (n & (n - 1)) == 0:
      while n > 1:
         n >>= 1
         cnt += 1
      return cnt % (find_pow_of_2(c)) == 0
   return False
n = 32768
x = 32
print(solve(n, x))

입력

32768, 32

출력

True