ホームページ  >  記事  >  バックエンド開発  >  嵐の数字

嵐の数字

PHPz
PHPz転載
2023-08-26 09:41:171179ブラウズ

嵐の数字

N がストーマー数になるには、式 N^2 1 の最大の素因数が 2*N 以上である必要があります。 正の整数である必要があります。

たとえば、4 はストーマー数です。4*4 1=17 は最大の素因数 17 自体を持ち、これは 8 より大きくなります。つまり 2*4.

しかし、3*3 1=10 であるため、3 は強い数ではありません。10 の最大の素因数は 5 であり、6 (2*3) よりも小さいです。

この問題では、正の整数 N が与えられ、最初の N 個のストーマーを出力することが目標です。

入力: 4

出力: 1 2 4 5

これがストーマーの最初の 4 つの番号です。 3はストーマーナンバーではないので付属しません。

###アルゴリズム###

    数値
  • (N^2 1)

    の最大の素因数を見つけて、それを任意の変数に格納します。

  • 素因数が
  • 2*N

    . 以上であるかどうかを確認します。

  • 条件を満たす場合、それはストーマー番号です。
  • i が N 以下になるまですべてのストーマー番号を出力します。
  • ###方法###
  • 上記のアルゴリズムをコードに実装するには、2 つの関数を作成する必要があります。1 つ目は、各ケースの最高の素因数を見つけるため、2 つ目は、それが 2*N 以上であるかどうかを確認し、出力を続けるためです。同時ストーマー番号の場合は番号。

すべての数値 n −

に対する式の最高の素因数 (n^2 1) を見つけるため

剰余が 0 になるまで数値を 2 で割り、2 を primemax に格納します。

  • この時点では、n は奇数である必要があるため、for ループで反復し、i=3 から n の平方根までの奇数のみを反復します。

  • ここで、i を primemax に格納し、i が n を除算している間、n を i で除算します。i が n を除算できなかった場合は、n を 2 増やして続行します。

  • n が 2 より大きい素数の場合、最初の 2 つのステップでは n は 1 にならないため、n を primemax に格納し、primemax を返します。

  • 次の機能は、番号がストーマー番号であるかどうかを確認することです。ストーマー番号である場合は、それを出力します。

最初の N 個のストーマー数を計算するために、変数 temp を 0 として宣言します。

  • i=1 から開始し、temp が N 未満になる前に for ループの反復を実行します。

  • (i*i 1) に 2*i 以上の最大の素因数があるかどうかを確認します。上記の条件が真の場合、i を出力し、temp を 1 ずつ増加します。

  • Example

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

以下は、C での上記のアプローチの実装です。 -

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

この記事では、最初の N Stormer 番号を出力する問題を解決しようとします。

数値の素因数の計算方法も学びました。この記事がこの問題に関するあなたの疑問をすべて解消するのに役立つことを願っています。

以上が嵐の数字の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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