一道简单的数学位运算题,分成求质数和获取二进制1的个数两种问题计算。
func countPrimeSetBits(left int, right int) int {
var res int
for i := left;i <= right;i ++ {
if isprime(bits.OnesCount(uint(i))) {
res ++
}
}
return res
}
func isprime(x int) bool {
if x < 2 {
return false
}
for i := 2;i * i <= x;i ++ {
if x%i == 0 {
return false
}
}
return true
}