Computer Science/Algorithm

제곱수, 2의 n 제곱인지 확인

데이터현 2021. 12. 29. 12:34

제곱수인지 확인

def isSquare(n): 
    return int(n ** 0.5) ** 2 == n

 

2의 n 제곱인지 확인

def isPowerOf2(n):
    return (n&(n-1))==0

2의 제곱은 비트로 나타낼 때 맨 왼쪽 비트만 1이고, n이 2의 제곱이라면 n-1 은 맨 왼쪽 비트가 0이고 그 오른쪽 비트들은 모두 1이게 됨.

따라서 n이 2의 거듭제곱이라면 n과 n-1을 and 연산 했을 때 0이 나오게 됨.