依次计算[L,R]内每个十进制数字所包含的二进制1的个数:
class Solution {
public:
int find1num(int n)
{
int num=0;
while(n)
{
num++;
n = n&(n-1);
}
return num;
}
int countPrimeSetBits(int L, int R) {
int ans=0;
set<int> prime={2,3,5,7,11,13,17,19,23,29};
for(int i=L;i<=R;i++)
{
int num=find1num(i);
if(prime.count(num))
ans++;
}
return ans;
}
};
本文介绍了一个算法,用于计算指定区间[L,R]内所有整数转换为二进制后,其1的个数为质数的整数数量。通过遍历区间内的每个数,计算该数的二进制1的个数,并判断这个个数是否为预设质数集的一员。
573

被折叠的 条评论
为什么被折叠?



