题目:
给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。
计算置位位数 就是二进制表示中 1 的个数。
算法:
方法一:模拟
注意0和1不是素数
func countPrimeSetBits(left int, right int) int {
cnt := 0
for i := left; i <= right; i ++ {
if isPrime(onesCount(i)) {
cnt ++
}
}
return cnt
}
func isPrime(num int) bool {
if num < 2 {
return false
}
for i := 2; i * i <= num; i ++ {
if num % i == 0 {
return false
}
}
return true
}
func onesCount(n int) int {
cnt := 0
for n > 0 {
n = n & (n - 1)
cnt ++
}
return cnt
}