762. Prime Number of Set Bits in Binary Representation

难道就是考我判断质数...?

class Solution:
    def countPrimeSetBits(self, L: int, R: int) -> int:
        def isPrime(n) : 
            if (n <= 1) : return False
            if (n <= 3) : return True
            if (n % 2 == 0 or n % 3 == 0) : return False
            i = 5
            while(i * i <= n) : 
                if (n % i == 0 or n % (i + 2) == 0) : return False
                i = i + 6
            return True
        
        res = 0
        for N in range(L, R+1):
            if isPrime(bin(N).count("1")): res += 1
        return res

update 看到的另一个思路,不用判断质数:

L, R will be integers L <= R in the range [1, 10^6], 10^6 < 2^20

所以直接保存20以内的质数进行查找判断即可。空间换时间的一个思路。

class Solution(object):
    def countPrimeSetBits(self, L, R):
        """
        :type L: int
        :type R: int
        :rtype: int
        """
        primes = [2, 3, 5, 7, 11, 13, 17, 19]
        res = 0
        for num in range(L, R + 1):
            if bin(num).count("1") in primes:
                res += 1
        return res

Last updated

Was this helpful?