ハウスプロジェクト 素数もあれば、それからもあります。 素数の見つけ方

素数もあれば、それからもあります。 素数の見つけ方

問題2.30
自然数で構成される 1 次元配列 A が与えられるとします。 表示数量 素数配列内で。

まず、素数とは何かを思い出させてください。

では、タスクに移りましょう。 基本的に、素数を決定するプログラムが必要です。 そして、要素を分類してその値を確認するのはテクノロジーの問題です。 同時に、配列の素数を数えるだけでなく表示することもできます。

パスカルで素数を決定する方法

解法アルゴリズム 詳細な分析パスカルであげます。 C++ のサンプル プログラムで解決策を確認できます。

重要!
多くの人が間違える可能性があるのはここです。 定義によれば、素数は スムーズ二つの異なるディバイダー したがって、数値 1 は素数ではありません (ゼロは任意の数で割ることができるため、素数でもありません)。

自分で作成した を使用して、数値が素数であるかどうかを確認します。 この関数は、数値が素数の場合に TRUE を返します。

この関数では、まず数値が 2 未満かどうかを確認します。 もしそうなら、それはもはや素数ではありません。 数値が 2 または 3 の場合、それは明らかに素数であるため、追加のチェックは必要ありません。

ただし、数値 N が 3 より大きい場合、この場合、2 から (N-1) まで、可能なすべての約数を循環します。 数値 N が余りを持たずに何らかの約数で割り切れる場合、それは素数でもありません。 この場合、ループを中断し (これ以上チェックしても意味がないため)、関数は FALSE を返します。

数値がそれ自体で割り切れるかどうかをチェックすることには意味がありません (ループが N-1 までしか続かないのはそのためです)。

関数自体はここでは紹介しません。サンプル プログラムで見てください。

パスカルで問題 2.30 を解く私のタスク; //*********************************************** **************** //定数 //**************************** ********* ************************************ カウント = 100; //配列内の要素の数 //**************************************** *********** *********************** // 関数と手順 //********** *********** ************************************** ** //***** **************************************** * ******** // 数値が素数かどうかをチェックします // 入力: N - 数値 // 出力: TRUE - 数値 N が素数、FALSE - 素数ではありません //********** ***************************************** ****IsPrimeNumber(N:WORD) : ; 変数 i: ; 開始 := TRUE; N of 0..3: 開始 N 終了; 終わり;

終わり; i:= 2 to (N-1) do if (N i) = 0 then //素数ではない begin Result:= FALSE; ; 終わり; 終わり; i: 単語; X: ワード = 0; A: Word の。 //*********************************************** ***************** // メインプログラム //**************************** ***************************************** begin //配列に i:= 1 ~ の数値を入力しますCOUNT do A[i] := i; //配列から素数を数えて選択する for i:= 1 to COUNT do if IsPrimeNumber(A[i]) then begin (X); Write(A[i], " "); 終わり; (#10#13"素数の数 = ", X); WriteLn("終わりです。ENTERを押してください..."); ; 終わり。


C++ の問題 2.30 の解決策 #含む。 まず、素数と合成数の定義と例を示します。 この後、素数が無限に存在することを証明します。 次に素数表を書き出し、特にエラトステネスの篩と呼ばれる方法に注目して素数表の作成方法を考えていきます。 結論として、特定の数が素数または合成数であることを証明する際に考慮する必要がある主要な点を強調します。

ページナビゲーション。

素数と合成数 - 定義と例

素数と合成数の概念は、1 より大きい数を指します。 このような整数は、正の約数の数に応じて素数と合成数に分けられます。 だから理解するには 素数と合成数の定義、約数と倍数とは何かをよく理解する必要があります。

意味。

素数は、正の約数が 2 つだけ、つまりそれ自体と 1 だけを持つ整数、大きな単位です。

意味。

合成数少なくとも 3 つの正の約数を持つ大きな整数です。

これとは別に、数値 1 は素数にも合成数にも適用されないことに注意してください。 ユニットには正の約数が 1 つだけあり、それは数字の 1 そのものです。 これにより、数値 1 が、少なくとも 2 つの正の約数を持つ他のすべての正の整数と区別されます。

正の整数は であり、正の約数は 1 つだけであることを考慮すると、素数と合成数の前述の定義を他の定式化することができます。

意味。

素数は、正の約数を 2 つだけ持つ自然数です。

意味。

合成数は、2 つ以上の正の約数を持つ自然数です。

1 より大きいすべての正の整数は素数または合成数であることに注意してください。 言い換えれば、素数でも合成でもない単一の整数は存在しません。 これは、数値 1 と a が常に任意の整数 a の約数であるという割り算の性質から導き出されます。

前の段落の情報に基づいて、合成数を次のように定義できます。

意味。

素数ではない自然数をこう呼ぶ 複合.

あげましょう 素数と合成数の例.

合成数の例には、6、63、121、6,697 などがあります。 この声明にも説明が必要です。 数字 6 には、正の約数 1 と 6 に加えて、約数 2 と 3 もあります。6 = 2 3 であるため、6 は真の合成数です。 63 の正の因数は、1、3、7、9、21、63 です。 数値 121 は積 11・11 に等しいため、その正の約数は 1、11、121 になります。 そして、6,697 という数字は、その正の約数が 1 と 6,697 に加えて、37 と 181 という数字でもあるため、合成です。

この点の結論として、素数と共素数は全く同じものではないという事実にも注意を喚起したいと思います。

素数表

便宜上素数 さらに使用する、素数テーブルと呼ばれるテーブルに記録されます。 以下であり 素数表最大1,000まで。

「なぜ素数の表を 1,000 までしか埋めなかったのに、存在するすべての素数の表を作成することは可能ではないのですか?」という論理的な疑問が生じます。

まずはこの質問の最初の部分に答えてみましょう。 素数の使用が必要なほとんどの問題では、1,000 以内の素数で十分です。 他の場合には、おそらく、特別な解決策に頼らなければならないでしょう。 確かに、10,000 であれ 1,000,000,000 であれ、任意の大きな有限の正の整数までの素数のテーブルを作成できますが、次の段落では素数のテーブルを作成する方法について説明します。特に、と呼ばれた。

次に、既存のすべての素数のテーブルを作成する可能性 (またはむしろ不可能) を見てみましょう。 素数は無限に存在するため、すべての素数の表を作成することはできません。 最後のステートメントは、次の補助定理の後に証明する定理です。

定理。

1 より大きい自然数の 1 以外の最小の正の約数は素数です。

証拠。

させて は – 自然数、1 より大きく、b は数値 a の最小の非 1 の正の約数です。 b が素数であることを矛盾によって証明しましょう。

b が合成数であると仮定します。 次に、数 b (b 1 とします) の約数があり、これは 1 とも b とも異なります。 除数の絶対値が被除数の絶対値を超えないことも考慮すると (これは割り算の性質からわかります)、条件 1 が満たされる必要があります。

数 a は条件に従って b で割り切れます。また、b は b 1 で割り切れると言いました。割り切れるという概念により、a=b q および b=b となる整数 q および q 1 の存在について話すことができます。 1 q 1 、ここから a= b 1 ·(q 1 ·q) 。 2 つの整数の積は整数であるということになり、等式 a=b 1 ·(q 1 ·q) は、b 1 が数値 a の約数であることを示します。 上記の不等式を考慮すると 1

これで、素数が無限に存在することが証明できました。

定理。

素数は無限に存在します。

証拠。

そうでないと仮定しましょう。 つまり、素数が n 個しかなく、これらの素数が p 1、p 2、...、p n であるとします。 示されたものとは異なる素数を常に見つけることができることを示しましょう。

数値 p が p 1 ·p 2 ·… ·p n +1 に等しいと考えてください。 この数が素数 p 1、p 2、...、p n のそれぞれとは異なることは明らかです。 数値 p が素数であれば、定理は証明されます。 この数が合成の場合、前の定理により、この数の素約数が存在します (これを p n+1 と表します)。 この約数が数値 p 1、p 2、...、p n のいずれとも一致しないことを示します。

そうでない場合は、割り算の性質に従って、積 p 1 ·p 2 ·… ·p n は p n+1 で除算されます。 しかし、数 p は p n+1 でも割り切れ、合計 p 1 ·p 2 ·… ·p n+1 に等しくなります。 したがって、p n+1 はこの和の第 2 項 (1 に等しい) を除算しなければなりませんが、これは不可能です。

このように、予め定められた任意の数の素数に含まれない新たな素数を常に見つけることができることが証明された。 したがって、素数は無限に存在します。

したがって、素数は無限にあるという事実のため、素数の表を作成するときは、常に上からある数値 (通常は 100、1,000、10,000 など) に制限します。

エラトステネスのふるい

次に、素数のテーブルを作成する方法について説明します。 100 までの素数の表を作成する必要があるとします。

この問題を解決する最も明白な方法は、2 から始まり 100 で終わる正の整数を順番にチェックし、1 より大きくテスト対象の数より小さい正の約数が存在するかどうかを確認することです (割り算の性質からわかっています)。除数の絶対値が被除数の絶対値 (ゼロ以外) を超えないこと。 そのような約数が見つからない場合、テストされる数は素数であり、素数テーブルに入力されます。 そのような約数が見つかった場合、テストされる数値は合成数値であり、素数の表には入力されません。 この後、次の数値に移行し、同様に約数の存在がチェックされます。

最初のいくつかの手順を説明しましょう。

番号 2 から始めます。 数字 2 には、1 と 2 以外に正の約数はありません。 そこで、簡単なので素数表に記入してみます。 ここで、2 が最小の素数であると言う必要があります。 3 番に移りましょう。 1 と 3 以外に考えられる正の約数は 2 です。 しかし、3 は 2 で割り切れないので、3 は素数であり、素数の表にも含める必要があります。 4番に移りましょう。 1 と 4 以外の正の約数は 2 と 3 になります。確認してみましょう。 数字 4 は 2 で割り切れるので、4 は合成数であり、素数の表に含める必要はありません。 4 が最小の合成数であることに注意してください。 5番に移りましょう。 数値 2、3、4 の少なくとも 1 つがその約数であるかどうかを確認します。 5 は 2、3、または 4 で割り切れないので、素数であり、素数の表に書き留める必要があります。 その後、6、7 というように 100 までの数字に移行します。

素数のテーブルを作成するこのアプローチは理想とは程遠いです。 いずれにせよ、彼には存在する権利があります。 整数のテーブルを作成するこの方法では、割り算基準を使用できるため、約数を見つけるプロセスがわずかに高速化されることに注意してください。

と呼ばれる素数のテーブルを作成するもっと便利な方法があります。 名前にある「ふるい」という言葉は偶然ではありません。このメソッドの動作は、いわば整数や大きな単位をエラトステネスのふるいに通して「ふるいにかけ」、単純なものから複合的なものを分離するのに役立つからです。

50 までの素数の表を作成するときにエラトステネスのふるいが動作しているところを見てみましょう。

まず、2、3、4、…、50という数字を順番に書きます。


最初に書かれた数字 2 は素数です。 次に、番号 2 から順に 2 つの番号を右に移動し、コンパイル中の番号の表の最後に到達するまで、これらの番号を取り消し線で消します。 これにより、2 の倍数のすべての数値に取り消し線が引かれます。

2 の次に取り消し線が引かれていない最初の数字は 3 です。 この数は素数です。 ここで、3 番から順に 3 つの数字だけ右に移動し (すでに取り消し線が引かれている数字を考慮して)、それらを取り消し線で消します。 これにより、3 の倍数のすべての数値に取り消し線が引かれます。

3 の次に取り消し線が引かれていない最初の数字は 5 です。 この数は素数です。 ここで、数字 5 から一貫して 5 数字ずつ右に移動し (先ほど取り消し線を引いた数字も考慮します)、それらを取り消し線で消します。 これにより、5 の倍数のすべての数字に取り消し線が引かれます。

次に、7 の倍数、次に 11 の倍数、というように数字を消していきます。 ×印を付ける数字がなくなると、プロセスは終了します。 以下は、エラトステネスのふるいを使用して得られた、50 までの素数の完成した表です。 バツのない数字はすべて素数であり、バツ印のある数字はすべて合成です。

また、エラトステネスのふるいを使用して素数の表を作成するプロセスを高速化する定理を定式化して証明してみましょう。

定理。

1 とは異なる合成数 a の最小の正の約数は を超えません。ここで、 は a からです。

証拠。

1 とは異なる合成数 a の最小の約数を文字 b で表しましょう (前の段落の最初で証明された定理からわかるように、数 b は素数です)。 次に、a=b・q のような整数 q があり (ここで、q は整数の乗算規則に従う正の整数です)、(b>q の場合、b が a の最小約数であるという条件に違反します) 、 a=q・b の等価性により、q は数値 a の約数でもあるため)。 不等式の両辺に正の値と 1 より大きい整数を掛けると (これを行うことは許可されています)、 が得られ、そこから と が得られます。

証明された定理はエラトステネスのふるいに関して何を与えますか?

まず、素数 b の倍数である合成数は、次の値に等しい数値で始まる必要があります (これは不等式から得られます)。 たとえば、2 の倍数の数字は 4 で始め、3 の倍数は 9 で、5 の倍数は 25 で始めるなどのようにします。

第二に、エラトステネスのふるいを使用して番号 n までの素数の表を作成することは、素数の倍数であるすべての合成数が を超えない場合に完了したと見なすことができます。 この例では、n=50 (最大 50 までの素数のテーブルを作成しているため)、したがって、エラトステネスのふるいは、素数 2、3、5、7 の倍数であるすべての合成数を除去する必要があります。算術平方根 50 を超えてはなりません。 つまり、素数 11、13、17、19、23 などの 47 までの倍数である数値を検索して取り消し線を引く必要はなくなりました。これらの数値は、より小さい素数 2 の倍数としてすでに取り消し線で示されているためです。 、3、5、7。

この数は素数ですか、それとも合成ですか?

一部のタスクでは、指定された数値が素数か合成数値かを調べる必要があります。 一般に、このタスクは、特に多数の文字で構成される数値の場合、決して単純ではありません。 ほとんどの場合、それを解決するための特定の方法を探す必要があります。 ただし、単純なケースについては、思考の流れに方向性を与えるように努めます。

もちろん、割り算テストを使用して、指定された数値が合成であることを証明することもできます。 たとえば、割り算のテストで、指定された数が 1 より大きい正の整数で割り切れることが示された場合、元の数は合成数になります。

例。

898,989,898,989,898,989 が合成数であることを証明してください。

解決。

この数字の各桁の合計は 9・8+9・9=9・17 となります。 9・17 に等しい数は 9 で割り切れるので、9 で割り切れることにより、元の数も 9 で割り切れると言えます。 したがって、それは複合です。

このアプローチの重大な欠点は、割り算基準では数値の素数を証明できないことです。 したがって、数値をテストして素数か合成かを確認する場合は、別の方法を行う必要があります。

最も論理的なアプローチは、指定された数値の考えられるすべての約数を試すことです。 考えられる約数がいずれも指定された数値の真の約数ではない場合、この数値は素数になります。それ以外の場合、その数値は合成になります。 前の段落で証明された定理から、与えられた数 a の約数は、 を超えない素数の中から求めなければならないことがわかります。 したがって、与えられた数 a を素数 (素数の表から都合よく取り出したもの) で順番に割り、数 a の約数を見つけることができます。 約数が見つかった場合、数値 a は合成になります。 を超えない素数の中に数 a の約数がない場合、数 a は素数です。

例。

番号 11 723 単純ですか、それとも複合ですか?

解決。

11,723 という数字の約数は素数まで何になるかを調べてみましょう。 これを行うには、評価してみましょう。

それはかなり明白です 、200 2 =40,000 以降、11,723<40 000 (при необходимости смотрите статью 数字の比較)。 したがって、11,723 の可能な素因数は 200 未満になります。 これにより、作業がすでにはるかに簡単になります。 これを知らなかったら、200 までではなく 11,723 までのすべての素数を調べる必要があります。

必要に応じて、より正確に評価することができます。 108 2 =11,664、109 2 =11,881 なので、108 2<11 723<109 2 , следовательно, 。 したがって、109 未満の素数はいずれも、指定された数値 11,723 の素因数である可能性があります。

ここで、数値 11,723 を素数 2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71 に順番に分割します。 、 73 、 79 、 83 、 89 、 97 、 101 、 103 、 107 。 数値 11,723 を、書かれた素数の 1 つで割ると、合成になります。 書かれた素数のどれでも割り切れない場合、元の数は素数になります。

この単調で単調な分割プロセス全体については説明しません。 すぐに 11,723 としましょう。

イリヤの答えは正しいですが、あまり詳しくありません。 ちなみに、18世紀にはまだ1は素数とみなされていました。 たとえば、オイラーやゴールドバッハなどの偉大な数学者です。 ゴールドバッハは、2000 年代の 7 つの問題の 1 つであるゴールドバッハ仮説の著者です。 元の公式では、すべての偶数は 2 つの素数の合計として表すことができると述べています。 さらに、最初は 1 が素数として考慮されており、2 = 1+1 であることがわかります。 これは、仮説の元の定式化を満たす最小の例です。 その後修正され、この公式は「4 から始まるすべての偶数は 2 つの素数の合計として表すことができる」という現代的な形式になりました。

定義を思い出してみましょう。 素数は、p 自体と 1 の 2 つの異なる自然約数のみを持つ自然数 p です。定義からの当然の結果: 素数 p には、p 自体という 1 つの素数しかありません。

ここで、1 が素数であると仮定します。 定義上、素数には素数が 1 つだけあり、それ自体が素数になります。 すると、1 より大きい素数は、それとは異なる素数 (1 で割り切れる) で割り切れることがわかります。 しかし、2 つの異なる素数を互いに割り算することはできません。 そうでない場合、それらは素数ではなく合成数となり、定義に矛盾します。 このアプローチでは、素数は 1 つだけ、つまり単位自体であることがわかります。 しかし、これは不合理です。 したがって、1 は素数ではありません。

1 と 0 は、別の数のクラス、つまり代数分野のサブセットにおける n 項演算に関する中立要素のクラスを形成します。 さらに、加算の演算に関しては、1 は整数の環の生成要素でもあります。

このように考慮すると、他の代数構造で素数の類似物を発見することは難しくありません。 1: 2、4、8、16、... などの 2 の累乗で構成される乗法グループがあるとします。 ここでは 2 が形成要素として機能します。 このグループの素数は、最小の要素より大きく、それ自体と最小の要素でのみ割り切れる数です。 私たちのグループでは、そのような特性を持っているのは 4 つだけです。 私たちのグループにはこれ以上素数はありません。

私たちのグループでも 2 が素数である場合は、最初の段落を参照してください。やはり、2 だけが素数であることがわかります。

この記事では、素数と合成数の概念について説明します。 このような数値の定義を例とともに示します。 素数の数が無限であることを証明し、エラトステネスの方法を使って素数の表に記録します。 数値が素数なのか合成なのかを判断する証拠が与えられます。

Yandex.RTB R-A-339285-1

素数と合成数 - 定義と例

素数と合成数は正の整数として分類されます。 それらは 1 より大きくなければなりません。 約数も単純と複合に分けられます。 合成数の概念を理解するには、まず約数と倍数の概念を学ぶ必要があります。

定義 1

素数は 1 より大きく、2 つの正の約数、つまりそれ自身と 1 を持つ整数です。

定義 2

合成数は、1 より大きく、少なくとも 3 つの正の約数を持つ整数です。

1 は素数でも合成数でもありません。 正の約数は 1 つだけなので、他のすべての正の数とは異なります。 すべての正の整数は自然数と呼ばれ、数えることに使用されます。

定義 3

素数は、正の約数を 2 つだけ持つ自然数です。

定義 4

合成数は、2 つ以上の正の約数を持つ自然数です。

1 より大きい数値はすべて素数または合成数のいずれかです。 割り算の性質から、1 と数値 a は常に任意の数値 a の約数になります。つまり、それ自体と 1 で割り切れます。 整数の定義を与えてみましょう。

定義5

素数ではない自然数を合成数といいます。

素数: 2、3、11、17、131、523。 それらはそれ自体と 1 でのみ割り切れます。 合成数: 6、63、121、6697。 つまり、6 は 2 と 3 に分解でき、63 は 1、3、7、9、21、63、121 は 11、11 に分解でき、約数は 1、11、121 になります。 6697 という数字は 37 と 181 に分解されます。 素数と共素数の概念は異なる概念であることに注意してください。

素数を簡単に使用するには、テーブルを使用する必要があります。

自然数は無限に存在するため、既存のすべての自然数を表す表は非現実的です。 数値が 10000 または 1000000000 のサイズに達した場合は、エラトステネスのふるいの使用を検討する必要があります。

最後のステートメントを説明する定理を考えてみましょう。

定理1

1 より大きい自然数の 1 以外の最小の正の約数は素数です。

証拠1

a が 1 より大きい自然数、b が a の 1 以外の最小の約数であると仮定します。 b が素数であることを矛盾法を使って証明する必要があります。

b が合成数であると仮定します。 ここから、b には 1 とも異なり、また b とも異なる約数があることがわかります。 このような約数は b 1 として表されます。 条件1が必要です。< b 1 < b 完成しました。

この条件から、a は b で除算され、b は b で除算される 1 ことがわかります。これは、割り算の概念が次のように表されることを意味します。 a = b qそして b = b 1 · q 1 、ここで a = b 1 · (q 1 · q) 、ここで q と q1は整数です。 整数の乗算の規則によれば、整数の積は a = b 1 · (q 1 · q) の形式の等価性を持つ整数であることがわかります。 b 1 であることがわかります。 は数値 a の約数です。 不平等 1< b 1 < b ないこれは、b が a の 1 以外の最小の正の約数であることが判明したためです。

定理2

素数は無限に存在します。

証拠2

おそらく、有限数の自然数 n をとり、それらを p 1、p 2、…、p n と表します。 示されたものとは異なる素数を見つけるオプションを考えてみましょう。

p 1、p 2、...、p n + 1 に等しい数 p を考慮してみましょう。 これは、p 1、p 2、...、p n の形式の素数に対応する各数値と等しくありません。 数 p は素数です。 その後、定理は証明されたと考えられます。 複合の場合は、p n + 1 という表記をとる必要があります。 そして、約数が p 1、p 2、...、p n のいずれとも一致しないことを示します。

そうでない場合は、積 p 1、p 2、...、p n の割り算特性に基づいて、 , pn + 1 で割り切れることがわかります。 式 p n + 1 に注意してください。 数値 p を除算すると、合計 p 1、p 2、...、p n + 1 と等しくなります。 式 p n + 1 が得られます。 この和の第 2 項 (1 に等しい) を除算する必要がありますが、これは不可能です。

与えられた任意の数の素数の中から任意の素数を見つけることができることがわかります。 素数は無限に存在するということになります。

素数が多いため、表は 100、1000、10000 などの数値に限定されます。

素数のテーブルをコンパイルするときは、このようなタスクでは 2 から 100 までの数値を順番にチェックする必要があることを考慮する必要があります。 除数がない場合はテーブルに記録されますが、複合の場合はテーブルに入力されません。

段階的に見てみましょう。

数字 2 から始める場合、約数は 2 と 1 の 2 つだけなので、テーブルに入力できることになります。 3という数字も同様です。 数値 4 は合成値であり、2 と 2 に分解する必要があります。 数字の 5 は素数であり、テーブルに記録できることを意味します。 これを100番まで繰り返します。

この方法は不便で時間がかかります。 テーブルを作成することは可能ですが、多くの時間を費やす必要があります。 割り算基準を使用する必要があります。これにより、約数を見つけるプロセスが高速化されます。

エラトステネスのふるいを使用する方法が最も便利であると考えられています。 以下のテーブルの例を見てみましょう。 まず、2、3、4、…、50という数字を書きます。

ここで、2 の倍数の数字をすべて取り消す必要があります。 連続した取り消し線を実行します。 次のようなテーブルが得られます。

次に、5 の倍数の数字を消していきます。 我々が得る:

7、11 の倍数の数字に取り消し線を付けます。 最終的にテーブルは次のようになります

定理の定式化に移りましょう。

定理3

基数 a の最小の正の約数は、1 とは異なり、a を超えません。ここで、a は指定された数の算術根です。

証拠3

b は合成数 a の最小の約数を表す必要があります。 整数 q があり、a = b · q であり、b ≤ q です。 形式の不平等は容認されません b > q、条件に違反しているからです。 不等式 b ≤ q の両辺には、1 に等しくない任意の正の数 b を乗算する必要があります。 b · b ≤ b · q (b 2 ≤ a および b ≤ a) が得られます。

証明された定理から、表内の数字を取り消し線で消すと、b 2 に等しく、不等式 b 2 ≤ a を満たす数字から始める必要があるという事実が得られることは明らかです。 つまり、2 の倍数の数値に取り消し線を引くと、プロセスは 4 から始まり、3 の倍数は 9 というように 100 になるまで続きます。

エラトステネスの定理を使用してこのような表を作成すると、すべての合成数を取り消しても、n を超えない素数が残ることがわかります。 n = 50 の例では、n = 50 になります。 このことから、エラトステネスのふるいは、値が 50 の根の値以下のすべての合成数をふるいにかけることがわかります。 数字の検索は取り消し線を引いて行います。

解く前に、その数が素数か合成数かを調べる必要があります。 可分性の基準がよく使用されます。 以下の例でこれを見てみましょう。

例1

数値 898989898989898989 が合成であることを証明します。

解決

指定された数字の桁の合計は 9 8 + 9 9 = 9 17 です。 これは、9 で割り切れるテストに基づいて、9 · 17 という数字が 9 で割り切れることを意味します。 したがって、それは複合であるということになります。

このような記号は数値の素数を証明できません。 検証が必要な場合は、他のアクションを実行する必要があります。 最も適切な方法は、数値を列挙することです。 その過程で、素数と合成数を見つけることができます。 つまり、数値は値が a を超えてはなりません。 つまり、数値 a を素因数分解する必要があります。 これが満たされる場合、数値 a は素数であると考えることができます。

例 2

合成番号または素数 11723 を決定します。

解決

ここで、数値 11723 の約数をすべて見つける必要があります。 11723 を評価する必要があります。

ここから、11723 であることがわかります。< 200 , то 200 2 = 40 000 、11 723< 40 000 . Получаем, что делители для 11 723 меньше числа 200 .

数値 11723 をより正確に推定するには、式 108 2 = 11 664 を記述する必要があります。 109 2 = 11 881 、 それ 108 2 < 11 723 < 109 2 。 その結果、11723< 109 . Видно, что любое число, которое меньше 109 считается делителем для заданного числа.

展開すると、2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、 83 、 89 、 97 、 101 、 103 、 107 はすべて素数です。 このプロセス全体は、列による除算として表すことができます。 つまり、11723 を 19 で割ります。 剰余なしの割り算が行われるため、数字 19 はその因数の 1 つです。 部門を列として表してみます。

したがって、11723 は、それ自体と 1 に加えて 19 の約数があるため、合成数であることがわかります。

答え: 11723 は合成数です。

テキスト内のエラーに気付いた場合は、それを強調表示して Ctrl+Enter を押してください。

約数の列挙。定義上、数値 nが素数であるのは、2 および 1 とそれ自体を除く他の整数で割り切れない場合のみです。 上記の式は不要な手順を削除し、時間を節約します。たとえば、数値が 3 で割り切れるかどうかを確認した後、9 で割り切れるかどうかを確認する必要はありません。

  • Floor(x) 関数は、x を x 以下の最も近い整数に丸めます。

剰余算術について学びます。「x mod y」(mod はラテン語の「modulo」、つまり「モジュール」の略語です)という演算は、「x を y で割って余りを求める」という意味です。 言い換えれば、剰余算術では、と呼ばれる特定の値に達すると、 モジュール、数字は再びゼロに「変わります」。 たとえば、時計は 12 の係数で時間を刻みます。つまり、10 時、11 時、12 時を表示し、その後 1 に戻ります。

  • 多くの電卓には mod キーがあります。 このセクションの最後では、大きな数に対してこの関数を手動で評価する方法を示します。
  • フェルマーの小定理の落とし穴について学びましょう。テスト条件を満たさない数値はすべて合成されますが、残りの数値は おそらく単純なものに分類されます。 不正確な結果を避けたい場合は、次の点を探してください。 n「カーマイケル数」(このテストを満たす合成数) と「擬似素数フェルマー数」(これらの数は一部の値についてのみテスト条件を満たす) のリスト内 ある).

    都合がよければ、ミラー・ラビン検定を使用してください。この方法は手作業で計算するのは非常に面倒ですが、コンピュータ プログラムではよく使用されます。 許容可能な速度が得られ、フェルマーの方法よりもエラーが少なくなります。 合成数は、値の 1/4 を超える計算が行われた場合、素数として受け入れられません。 ある。 異なる値をランダムに選択した場合 あるそしてそれらすべてについて、テストは肯定的な結果をもたらすため、かなり高い自信を持って次のように仮定できます。 nは素数です。

  • 大きな数値の場合は、モジュラー演算を使用します。 MOD を備えた電卓が手元にない場合、または電卓がそのような大きな数値を処理できるように設計されていない場合は、べき乗とモジュラー演算のプロパティを使用して計算を簡単にします。 以下は例です 3 50 (\displaystyle 3^(50)) mod 50:

    • 式をより便利な形式に書き換えます: mod 50。手動計算を行う場合は、さらに単純化する必要がある場合があります。
    • (3 25 ∗ 3 25) (\displaystyle (3^(25)*3^(25))) mod 50 = mod 50 mod 50) mod 50。ここでは剰余乗算の性質を考慮しました。
    • 3 25 (\displaystyle 3^(25)) mod 50 = 43。
    • (3 25 (\displaystyle (3^(25))モッド50 ∗ 3 25 (\displaystyle *3^(25))モッド 50) モッド 50 = (43 ∗ 43) (\displaystyle (43*43))モッド50。
    • = 1849 (\displaystyle =1849)モッド50。
    • = 49 (\displaystyle =49).


  • サイトの新着情報

    >

    最も人気のある