Python二进制表示形式中设置位的素数

假设我们有两个整数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