题目地址:https://leetcode.com/problems/prime-number-of-set-bits-in-binary-representation/description/
大意:判断一个整数转化为二进制数后,它的1的个数是不是质数。
思路:题目中有两个一个范围条件
- L、R会是[1,10^6]范围内的整数。
- R – L最多为10000。
这样的话,就算是有32位1,也就是说最大的整数就是32.那把32以内的所有质数列出来,然后判断就行了
primes = {2, 3, 5, 7, 11, 13, 17, 19}
return sum(bin(x).count('1') in primes for x in range(L,R+1))
但是如果就是想知道是不是质数呢?列出一个判断质数的方法
def isPrime(self,n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True