LeetCode简单题之二进制表示中质数个计算置位
題目
給你兩個(gè)整數(shù) left 和 right ,在閉區(qū)間 [left, right] 范圍內(nèi),統(tǒng)計(jì)并返回 計(jì)算置位位數(shù)為質(zhì)數(shù) 的整數(shù)個(gè)數(shù)。
計(jì)算置位位數(shù) 就是二進(jìn)制表示中 1 的個(gè)數(shù)。
例如, 21 的二進(jìn)制表示 10101 有 3 個(gè)計(jì)算置位。
示例 1:
輸入:left = 6, right = 10
輸出:4
解釋:
6 -> 110 (2 個(gè)計(jì)算置位,2 是質(zhì)數(shù))
7 -> 111 (3 個(gè)計(jì)算置位,3 是質(zhì)數(shù))
9 -> 1001 (2 個(gè)計(jì)算置位,2 是質(zhì)數(shù))
10-> 1010 (2 個(gè)計(jì)算置位,2 是質(zhì)數(shù))
共計(jì) 4 個(gè)計(jì)算置位為質(zhì)數(shù)的數(shù)字。
示例 2:
輸入:left = 10, right = 15
輸出:5
解釋:
10 -> 1010 (2 個(gè)計(jì)算置位, 2 是質(zhì)數(shù))
11 -> 1011 (3 個(gè)計(jì)算置位, 3 是質(zhì)數(shù))
12 -> 1100 (2 個(gè)計(jì)算置位, 2 是質(zhì)數(shù))
13 -> 1101 (3 個(gè)計(jì)算置位, 3 是質(zhì)數(shù))
14 -> 1110 (3 個(gè)計(jì)算置位, 3 是質(zhì)數(shù))
15 -> 1111 (4 個(gè)計(jì)算置位, 4 不是質(zhì)數(shù))
共計(jì) 5 個(gè)計(jì)算置位為質(zhì)數(shù)的數(shù)字。
提示:
1 <= left <= right <= 10^6
0 <= right - left <= 10^4
來源:力扣(LeetCode)
解題思路
??這道題可以直接模擬來運(yùn)算,屬于直接翻譯類的題目。
class Solution:def countPrimeSetBits(self, left: int, right: int) -> int:def isPrime(x):if x<2:return Falsefor i in range(2,int(x**0.5)+1):if x%i==0:return Falsereturn Truecount=0for i in range(left,right+1):if isPrime(i.bit_count()):count+=1return count
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之二进制表示中质数个计算置位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之删除字符使字符串
- 下一篇: K近邻算法KNN