762 二進位制表示中質數個計算置位(模擬)

2021-10-09 16:02:49 字數 1111 閱讀 4918

1. 問題描述:

給定兩個整數 l 和 r ,找到閉區間 [l, r] 範圍內,計算置位位數為質數的整數個數。(注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。)

示例 1:

輸入: l = 6, r = 10

輸出: 4

解釋:6 -> 110 (2 個計算置位,2 是質數)

7 -> 111 (3 個計算置位,3 是質數)

9 -> 1001 (2 個計算置位,2 是質數)

10-> 1010 (2 個計算置位,2 是質數)

示例 2:

輸入: l = 10, r = 15

輸出: 5

解釋:10 -> 1010 (2 個計算置位, 2 是質數)

11 -> 1011 (3 個計算置位, 3 是質數)

12 -> 1100 (2 個計算置位, 2 是質數)

13 -> 1101 (3 個計算置位, 3 是質數)

14 -> 1110 (3 個計算置位, 3 是質數)

15 -> 1111 (4 個計算置位, 4 不是質數)

注意:2. 思路分析:

乙個很自然的想法是將當前範圍內的數字轉為二進位制然後判斷二進位制中為1的數目,可以使用python中的bin函式將十進位制數字轉為二進位制對應的字串表示,然後使用count函式計算字串中1的數目並且判斷是否是質數,因為題目的範圍是10 ^ 6,小於 2 ^ 20 = 1024 * 1024,所以對應的二進位制位數最多為19

3. **如下:

下面是力扣官方的**:

class solution(object):

def countprimesetbits(self, l, r):

primes =

return sum(bin(x).count('1') in primes

for x in range(l, r+1))

762 二進位制表示中質數個計算置位

題目描述 給定兩個整數 l 和 r 找到閉區間 l,r 範圍內,計算置位位數為質數的整數個數。注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。示例 1 輸入 l 6,r 10 輸出 4 解釋 6 110 2 個計算置位,2 是...

762 二進位制表示中質數個計算置位 簡單

題目 於力扣 leetcode 目錄三 實現 四 執行用時 五 部分測試用例 762.二進位制表示中質數個計算置位 說明 據題目說明 元素是 10 6 內的值,即 1000000,其二進位制中位 1 的個數最多為 20 位 建立 bucket 陣列,記錄下 20 以內質數索引上元素值為 1 遍歷陣列...

LeetCode762二進位制表示中質數個計算置位

給定兩個整數 l 和 r 找到閉區間 l,r 範圍內,計算置位位數為質數的整數個數。注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。示例 1 輸入 l 6,r 10 輸出 4 解釋 6 110 2 個計算置位,2 是質數 7 ...