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

파이썬에서 숫자를 확인하는 프로그램이 2의 거듭제곱인지 아닌지

<시간/>

숫자 n이 있다고 가정합니다. 이것이 2의 거듭제곱인지 아닌지 확인해야 합니다.

따라서 입력이 n =2048과 같으면 2048이 2^11이므로 출력은 True가 됩니다.

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

  • n이 0과 같으면

    • 거짓을 반환

  • (n AND (n - 1))이 0과 같으면 true를 반환하고 그렇지 않으면 false

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

def solve(n):
   if n == 0:
      return False
   return (n & (n - 1)) == 0

n = 2048
print(solve(n))

입력

2048

출력

True