//比较奇怪的质数判断法
boolean isPrime(int num){
if (num == 1)
return false;
if (num == 2 || num == 3)
return true;
if (num % 6 != 1 && num % 6 != 5)
return false;
int end = (int) Math.pow(num,1.0/2 );
for (int i = 5; i <= end; i += 6) {
if (num % i == 0 || num % (i + 2) == 0)
return false;
}
return true;
}
public int countPrimeSetBits(int l, int r) {
int ans=0;
for (int i = l; i <=r ; i++) {
int num=Integer.bitCount(i);
if(isPrime(num))
ans++;
}
return ans;
}