假设我们有两个整数L和R,我们必须找到在[L,R](含)范围内的二进制数形式的素数。
因此,如果输入像L = 6和R = 10,那么输出将是4,因为有4个数字6(110),7(111),9(1001),10(1010),都具有质数设置位数。
为了解决这个问题,我们将遵循以下步骤-
计数:= 0
对于L到R范围内的j,执行
如果j的设置位计数在[2,3,5,7,11,13,17,19]中,则
数:=数+ 1
返回计数
让我们看下面的实现以更好地理解-
class Solution:
   def countPrimeSetBits(self, L, R):
      def popcount(i):
         return bin(i)[2:].count('1')
      count = 0
      for j in range(L,R+1):
         if popcount(j) in [2,3,5,7,11,13,17,19]:
            count +=1
      return count
ob = Solution()
print(ob.countPrimeSetBits(6,10))6,10
输出结果
4