【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

你可能感兴趣的:(LeetCode)