Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのバイナリ表現のセットビットの素数


2つの整数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
  • 返品数

理解を深めるために、次の実装を見てみましょう-

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

  1. Cの浮動小数点数のセットビットを数える方法は?

    この問題では、1つの浮動小数点値が与えられます。バイナリ表現で設定されたビット数を見つける必要があります。 たとえば、浮動小数点数が0.15625の場合、6つのセットビットがあります。典型的なCコンパイラは、単精度浮動小数点表現を使用していました。したがって、次のようになります。 ビット値に変換するには、数値を1つのポインター変数に取り込んでから、ポインターをchar*型データに型キャストする必要があります。次に、各バイトを1つずつ処理します。次に、各文字のセットビットをカウントできます。 例 #include <stdio.h> int char_set_bit_cou

  2. 連続する1’のないバイナリ文字列の数をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −正の整数Nが与えられているので、文字列に連続する1が存在しないように、長さNで使用可能なすべての可能な個別のバイナリ文字列をカウントする必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # count the number of strings def countStrings(n):    a=[0 for i in range(n)]    b=[0 for i in range(n)]    a[0] = b[0]