8/27 每日一題(檢查二進制中1個數目是否為質數)
Given two integers left and right, return the count of numbers in the inclusive range [left, right] 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 1's present when written in binary.
- For example,
21written in binary is10101, which has3set bits.
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) 8 -> 1000 (1 set bit, 1 is not prime) 9 -> 1001 (2 set bits, 2 is prime) 10 -> 1010 (2 set bits, 2 is prime) 4 numbers have a prime number of set bits.
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) 5 numbers have a prime number of set bits.
Constraints:
1 <= left <= right <= 1060 <= right - left <= 104
class Solution:
#檢查質數
def is_prime(self,n):
if n<=1:
return False
for i in range(2,int(n**0.5)+1):
if n % i == 0:
return False
return True
def countPrimeSetBits(self, left: int, right: int) -> int:
res=0 #計算幾個質數
for i in range(left,right+1):
bits=bin(i)[2:].count('1')
if self.is_prime(bits):
res+=1
return res
---------------------------
class Solution:
def countPrimeSetBits(self, left: int, right: int) -> int:
p={2,3,5,7,11,13,17,19}
c=0
for i in range(left,right+1):
if i.bit_count() in p:
c+=1
return c ------------------------
class Solution:
def countPrimeSetBits(self, left: int, right: int) -> int:
def calnumofbit(num):
re = 0
while num:
if num&1:
re += 1
num = num >> 1
return re
re = 0
isprime = set([2,3,5,7,11,13,17,19,23])
for n in range(left, right+1):
num = n.bit_count()
if num in isprime:
re += 1
return re
標籤: leetcode

0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁