762. Prime Number of Set Bits in Binary Representation（python）｜Python 主题月

描述

Given two integers left and right, find the count of numbers in the range [left, right] (inclusive) having a prime number of set bits in their binary representation.

(Recall that the number of set bits an integer has is the number of 1s present when written in binary. For example, 21 written in binary is 10101 which has 3 set bits. Also, 1 is not a prime.)

Example 1:

``````Input: left = 6, right = 10
Output: 4
Explanation:
6 -> 110 (2 set bits, 2 is prime)
7 -> 111 (3 set bits, 3 is prime)
9 -> 1001 (2 set bits , 2 is prime)
10->1010 (2 set bits , 2 is prime)

Example 2:

``````Input: left = 10, right = 15
Output: 5
Explanation:
10 -> 1010 (2 set bits, 2 is prime)
11 -> 1011 (3 set bits, 3 is prime)
12 -> 1100 (2 set bits, 2 is prime)
13 -> 1101 (3 set bits, 3 is prime)
14 -> 1110 (3 set bits, 3 is prime)
15 -> 1111 (4 set bits, 4 is not prime)

Note:

``````left, right will be integers left <= right in the range [1, 10^6].
right - left will be at most 10000.

解答

``````class Solution(object):
def countPrimeSetBits(self, left, right):
"""
:type left: int
:type right: int
:rtype: int
"""
def isPrime(n):
if n==1:
return False
if n==2:
return True
for i in range(2,n):
if n%i==0:
return False
return True
result = 0
for i in range(left, right+1):
c = bin(i).count('1')
if isPrime(c):
result += 1
return result

运行结果

``````Runtime: 420 ms, faster than 56.47% of Python online submissions for Prime Number of Set Bits in Binary Representation.
Memory Usage: 13.6 MB, less than 58.82% of Python online submissions for Prime Number of Set Bits in Binary Representation.

解答

``````class Solution(object):
def countPrimeSetBits(self, left, right):
"""
:type left: int
:type right: int
:rtype: int
"""
p = {2, 3, 5, 7, 11, 13, 17, 19}
result = 0
for i in range(left, right+1):
if bin(i).count("1") in p:
result += 1
return result

运行结果

``````Runtime: 144 ms, faster than 100.00% of Python online submissions for Prime Number of Set Bits in Binary Representation.
Memory Usage: 13.7 MB, less than 25.00% of Python online submissions for Prime Number of Set Bits in Binary Representation.