原题目:https://leetcode-cn.com/problems/prime-number-of-set-bits-in-binary-representation/
思路:
计算每一位的1的个数,在判断是不是质数
代码:
class Solution {
public:
int countPrimeSetBits(int L, int R) {
int count = 0;
while (L <= R) {
int d = L, num = 0;
while (d > 0) {
num += d % 2;
d /= 2;
}
// 因为将1-10^6之间的数转为二进制数时,其计算置位位数不超过19,所以这里直接给出1-19之间的质数。
if (num == 2 || num == 3 || num == 5 || num == 7 || num == 11 || num == 13 || num == 17 || num == 19)
count++;
L++;
}
return count;
}
};