【LeetCode】762. Prime Number of Set Bits in Binary Representation

Python版本:python3.6.2

762. Prime Number of Set Bits in Binary Representation

Given two integers L and R, find the count of numbers in the range [L, R] (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: L = 6, R = 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: L = 10, R = 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)

class Solution:
    def countPrimeSetBits(self, L, R):
        """
        :type L: int
        :type R: int
        :rtype: int
        """
        res = 0
        for i in range(L, R+1):
            count_1 = bin(i)[2:].count('1')
            if count_1 > 1:
                flag = 0
                for j in range(2, count_1):
                    if not count_1 % j:
                        flag += 1
                if not flag:
                    res += 1
        return res
这题主要关键是在判断是不是素数,网上有其他的解法,比较好的是:
不用判断这个数是不是不能被每个自己小的数整除,而是判断到这个数的均根值。
即将上述代码的第13行改为for j in range(2, math.sqrt(count_1)+1)
同时记得import math
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值