Python 中二進位制表示中的素數位數


假設我們有兩個整數 L 和 R,我們要找出 [L, R](含)範圍內,其二進位制形式中存在素數位數的數的個數。

因此,如果輸入類似 L = 6 和 R = 10,則輸出將為 4,因為有 4 個數字 6(110)、7(111)、9(1001)、10(1010),它們都具有素數位數。

為解決此問題,我們將遵循以下步驟 -

  • count := 0
  • 對於從 L 到 R 的 j,執行
  • 如果 j 的位數計數在 [2,3,5,7,11,13,17,19] 中,則
    • count := count + 1
  • 返回 count

讓我們看看以下實現,以獲得更好的理解 -

示例

 現場演示

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

更新時間:2020-07-04

225 個瀏覽

開啟您的 職業生涯

透過完成此課程獲得認證

開始
廣告
© . All rights reserved.