タイトル「L と R の間で指定された 2 進数を変換した後の素数の数」は、L と R の間で 2 進数を基数に変換し、それから数を数えるという数学の問題を指します。 L と R の間の素数の数。変換する。数学では、素数は 1 より大きく、1 とそれ自体でのみ割り切れる整数です。
2 進数を別の基数の数値に変換するには、その数値を別の記数法で記述する必要があります。数値体系の基数は一意の数値の数であり、変換は新しい基数でその数値の同等の表現を見つけることによって行われます。変換後の素数の計算は、暗号化、コンピューター サイエンス、その他の分野で使用される難しい数論の問題です。この問題を解決するには、数論、素数、数体系についてよく知る必要があります。
数値は、1 とその数値自体で割り切れる場合にのみ素数と呼ばれます。たとえば、数字 5 は、数字 1 と 5 でしか割り切れないため素数ですが、6 は 2 と 3 でも割り切れるため、素数ではありません。
素数の数は、単に与えられた数値のセットに素数がいくつあるかを尋ねるものです。たとえば、数値のセット {1,2,3,4,5,6,7,8,9} を考えます。この数値のセットでは、素数の数は 4 で、素数は 2、3、5 です。 、および7。さらに、1 は素数ではありません。正の因数は 1 自体だけであるためです。
###方法###
######素因数分解######
###アルゴリズム###- 2 進数と、基数 L と R の範囲を入力します。
ステップ 3 - 2 進数を現在の基数に変換します。
ステップ4 -変換された数値が素数かどうかを確認します。
ステップ 5 - 変換された数値が素数の場合、素数の数を 1 増やします。
ステップ 6 - L から R の範囲内のすべての塩基に対してステップ 3 ~ 5 を繰り返します。
ステップ7 -取得した素数の総数を返します。
アルゴリズムの疑似コードを以下に示します - リーリー number_is_prime() は、入力として数値を受け取り、その数値が素数かどうかを示すブール値を返すメソッドです。
方法 1: 暴力的な解決策 ブルート フォース アプローチでは、2 進数を L から R までの各塩基に変換し、各変換で素数の数を数えます。数値が大きい場合は、考えられるすべてのバリエーションをチェックする必要があり、時間がかかる可能性があります。
次のコードには 3 つの関数が含まれています。最初の関数は「isPrime」で、入力数値が素数の場合は 1 を返し、それ以外の場合は 0 を返します。 2 番目の関数「binaryToDecimal」は、2 進数を 10 進数に変換します。 3つ目の関数「countPrimes」は、入力範囲内の2進数を10進数に変換して得られる素数の個数をカウントします。最後に、main 関数は 2 進数と数値の範囲を受け取り、「countPrimes」関数を呼び出して素数の数を出力します。
Example
の中国語訳は次のとおりです:このコードは、2 進数と範囲 L および R の事前定義された値を提供します。この例では、2 進数 1010 と範囲 5 ~ 20 を使用しました。必要に応じて、main 関数でこれらの値を変更できます。
リーリー ###出力### リーリー方法 2: 素因数分解
コード
の中国語訳は次のとおりです:以上が指定された 2 進数を L と R の間の基数に変換した後、素数の数を計算しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。