0
点赞
收藏
分享

微信扫一扫

762. 二进制表示中质数个计算置位(判断质数)

那小那小 2022-07-04 阅读 61


文章目录

  • ​​Question​​
  • ​​Ideas​​
  • ​​Code​​

Question

​​762. 二进制表示中质数个计算置位​​

给你两个整数 left  right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。

计算置位位数 就是二进制表示中 1 的个数。

例如, 21 的二进制表示 10101 3 个计算置位。


示例 1

输入:left = 6, right = 10
输出:4
解释:
6 -> 110 (2 个计算置位,2 是质数)
7 -> 111 (3 个计算置位,3 是质数)
9 -> 1001 (2 个计算置位,2 是质数)
10-> 1010 (2 个计算置位,2 是质数)
共计 4 个计算置位为质数的数字。
示例 2

输入:left = 10, right = 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 不是质数)
共计 5 个计算置位为质数的数字。


提示:

1 <= left <= right <= 106
0 <= right - left <= 104

Ideas

试除法判断质数 O(sqrt(n))

Code

class Solution:
def countPrimeSetBits(self, left: int, right: int) -> int:

def is_primes(x):
# 试除法
if x < 2:return 0
for i in range(2,int(x**0.5)+1):
if x % i == 0:
return 0
return 1

res = 0
for i in range(left,right+1):
x_b = bin(i)
cnt = x_b.count('1')

if is_primes(cnt):

res += 1
return res


举报

相关推荐

0 条评论