ホームページ  >  記事  >  バックエンド開発  >  指定された 2 進数を L と R の間の基数に変換した後、素数の数を計算します

指定された 2 進数を L と R の間の基数に変換した後、素数の数を計算します

PHPz
PHPz転載
2023-09-06 13:25:06565ブラウズ

指定された 2 進数を L と R の間の基数に変換した後、素数の数を計算します

タイトル「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 つの主な方法があります。 -

    暴力的な方法
  • ######素因数分解######

    ###アルゴリズム###
  • ステップ 1

    - 2 進数と、基数 L と R の範囲を入力します。

ステップ 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

の中国語訳は次のとおりです:

Example

このコードは、2 進数と範囲 L および R の事前定義された値を提供します。この例では、2 進数 1010 と範囲 5 ~ 20 を使用しました。必要に応じて、main 関数でこれらの値を変更できます。

リーリー ###出力### リーリー

方法 2: 素因数分解

素因数分解では、変換された数値の素因数を見つけて、それらが素数の範囲内にあるかどうかを確認します。数値が小さい場合は効率的な方法ですが、数値が大きい場合は計算コストが高くなる可能性があります。

次のコードは、指定された数値が素数であるかどうかを確認するか、指定された数値の前にある素数の数をカウントする 2 つの関数 isPrime() および countPrimes() を定義します。 main 関数は、ユーザーが入力した 2 進数と基数制限を受け入れ、2 進数を 10 進数に変換し、指定された制限内で別の基数に変換します。変換ごとに、プログラムは素因数を探し、それらが現在の基本制限内にある場合はカウンターを増分します。最後に、プログラムは見つかった素数の数を出力します。このコードは、標準入出力およびブール ライブラリをインポートします。

コード

の中国語訳は次のとおりです:

コード

リーリー ###出力### リーリー ###結論は###

要約すると、まず与えられた 2 進数を L と R の間の基数に変換し、次にその範囲内の素数の数を数えることによって、素数の数を決定できます。

以上が指定された 2 進数を L と R の間の基数に変換した後、素数の数を計算しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。