
No.10ベストアンサー
- 回答日時:
一応「決定論的な多項式時間素数判定アルゴリズム」は存在します. 与えられた n (log n ビットで表してます) が素数かどうかを, (log n)^8 くらいの計算時間で判定するというものだったような....
まあ n が小さければ √n までの数で割ってみるのが簡単かと.
No.9
- 回答日時:
√nよりも小さな素数で割るか、#8さんが教えてくれた「フェルマーの小定理」を使うのが面倒かもしれないけど確実な方法だと思いますが、ある数が素数でないことをある程度まで絞ることはできます。
イ:10以上の数において、1の位が1・3・7・9でない場合は、その数は素数ではありません。
ロ:同じく10以上の数において、数字を一番上の位から1の位まで足していったとき、それが3の倍数になる場合は3で割り切れますので、素数ではありません。
例:6561の場合、使われている数字を全て足せば6+5+6+1=18となります。18=3*6で3の倍数ですので、素数ではありません。
このように、素数でないことを判別するテクニックは少しならありますので、活用してみてください。
No.8
- 回答日時:
フェルマーの小定理を用いた判定法があります。
pがもし素数ならば。
p以下の自然数mをなんでもいいので持ってきて、
mをp乗してpで割ると必ずm余ります。
式を用いて書くと。
m^p≡m (mod p)
になります。
なので、余りがmでなければpは素数でないことになります。
しかし余りがmならばpは素数かというと、そうとは限りません。
素数ではないkに対しても、
mのk乗をkで割った余りが偶然mになることはあります。
なのでp以下の自然数mについていろいろなmで
m^p≡m (mod p)
になるか試してみて、成り立たなければpは素数でないことになります。
この方法は√p以下の自然数で実際に割っていくよりも効率的な方法です。
しかし、カーマイケル数と名前の付いた素数もどきの合成数が存在するので注意が必要です。
カーマイケル数に対しては上記以外の確実な判定法もあります。
そちらは初心者には少し難しいですが。
参考URL:http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A7% …
No.7
- 回答日時:
みなさんの書かれている方法しかないために、大きな素数の扱いはコンピュータを使っても時間がかかります。
そのために素数が暗号に利用されていると聞いたことがあります。
No.6
- 回答日時:
脇道にそれます。
Nが素数かどうかを判定する高速な方法もあるようですが、Nを√N以下の素数で割ってみる方法が確実です。
√N以下の素数はどれ位あるかというと、ざっと√N/(1.15・log(N))ですから、この回数分の割り算が必要です(logは常用対数)。
このとき、√N以下の素数で割るとき、素数表を覚えておかないといけません。覚えていないと、ある整数Kで割るとき、Kが素数かどうか判定しないといけません。そんなことを判定しているより、素数かどうか関係なく2から順に割っていった方が早いでしょう。
素数表を覚えていないと√N回の割り算が必要です。N=841とすると、必要な割り算の回数は、素数表を覚えていれば10回、覚えていなければ29回です。
以上から、教訓として「100以下の素数は覚えておいて損はない」です。100以下の素数は25個ですから覚えるのは大した手間ではありません。
それから30以下の整数の二乗も覚えておいて損はありません。実際、私は841と見た途端に29の二乗とわかりました。
No.5
- 回答日時:
ある数nが素数あるかどうか調べる方法は、√nよりも小さな素数で割ってみるしかありません。
(ほかの判定法もありますが、大学の数学科で勉強する内容になりますし、どれも上記の方法より効率が悪いものです)
この問題の場合n=841ですから、√841=29以下の素数2,3,5,・・・,29で割ってみるしかありません。
その際に、下記の倍数の判定が多少役に立つと思います。
たとえば
「nの1の位が偶数なら、nは2で割り切れます。」
「nの1の位が0あるいは5なら、nは5で割り切れます。」
「nの各位の和が3の倍数ならば、元の数も3で割り切れる。」
といった判定法を知っておくと多少計算は楽になります。
参考URL:http://www004.upp.so-net.ne.jp/s_honma/number/mu …
No.4
- 回答日時:
私が現役の時は1の位に注目してました。
例えば質問の841の1の位は1です。1の位が1になる1桁の掛け算は1*1と3*7と9*9のみです。(7*3は3*7と一緒として)あとは上の3つの式に10の位を当てはめていきます。この方法ならだいぶ考えるのが楽になりますよ。No.3
- 回答日時:
開平計算という計算があるのですが、学校で習わないですよね。
でも実際はこれを使わないと解けない問題もたまにあると思うので、覚えておくといいと思います。(この計算を使うと841が29の2乗であることもスグわかります)解説したURLがあったので貼っておきますね。わかりにくかったら、数学の先生に質問したら教えて下さると思いますよ。何回か手を動かして計算したらすぐ覚えられます。
偶然にも、私も841が見破れなかったことをきっかけに、姉に教わって覚えました。これもご縁です、覚えちゃってください(^^)
参考URL:http://www004.upp.so-net.ne.jp/s_honma/root.htm
No.2
- 回答日時:
確率的素数判定法というのが早いようですが・・・
nの素数判定の場合、
3からルートnまでの素数について割り算を行えば良いのですから、試験であれば大丈夫ですよね・・・
参考URL:http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0% …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミング 素数か素数ではないか判断するプログラミングで、写真のようなプログラミングを打ったとき 3 2023/05/29 15:50
- 数学 数学の複素数の証明問題です。 (1)複素数全体の集合に2要素間の実数と同様な大小を定義できないことを 2 2022/08/28 11:17
- 数学 実数であるべきものに虚数を含む複素数が現れたときの対処法 4 2022/08/30 09:19
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- 物理学 Lagrangian や Hamiltonianの妥当性評価 1 2022/08/30 13:13
- 数学 複素関数にロピタルの定理を使おうとしている回答者は、複素関数論はおろか微積分学もよく分かっていない、 5 2022/12/28 18:02
- 数学 命題 nが合成数ならば、√n以下の素数pが存在し、pはnを割り切る の対偶を考える際、nが合成数なら 1 2023/05/23 00:24
- 数学 数3 複素数 z^3+3z^2+3z-7=0 を解けという問題なのですが、 (z+1)^3=8と変形 3 2023/01/17 15:13
- 病院・検査 消化器内科の先生や消化器やピロリ菌に詳しい方からの回答お願いします。 先日、ピロリ菌判定で陽性でして 4 2022/04/25 06:35
- 数学 「素数」とは、「1と、それ自身でしか割り切れない数」。 「素因数分解」も「素数」の仲間ですか? 3 2022/04/14 22:45
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の6乗の答えと計算方法
-
累乗の逆(対数?)の計算方法を教...
-
2500を3対2でわける計算式おし...
-
パーセントの計算がまったく出...
-
8÷0=
-
Excelで、時間の引き算でマイナ...
-
AとBの比というのはA/Bの...
-
「逆数」って、何のためにある...
-
4^0.5乗の答え
-
素因数分解で最小公倍数・最大...
-
割り算の説明
-
a+aの答えがこんがらがってし...
-
この計算はカッコの中の掛け算...
-
Excel関数で、Nの1/3乗という...
-
スマホで累乗の指数や、ルート...
-
代数和ってなんでしょう
-
割引の計算がよく説明と理解が...
-
300÷1.5=200の計算方法
-
~の~乗を計算機を使わずに簡...
-
積の記号
おすすめ情報