
No.30ベストアンサー
- 回答日時:
> P∧2 で、超えるもので、(P+ 2)∧2 ー 1になるのが、なぜ、− 1をするのでしょうか?
これ、おかしな話なんで無視して構わないと思うんですけどねぇ。
適当な素数Pを持ってきて、P + 2が素数だなんて保証はないでしょう。
この本の文面、
> 実際、Pの次の素数Qに対して、Q^2 - 1まで、したがって(P + 2)^2まで進めて構いません。
とか書いてるけど、「したがって」もクソも
・常にQ = P + 2である
なんて保証は当然ありません。
P = 17の時、Q = 19 = P + 2
は成り立つけど、
P = 13の時、P + 2 = 15 => 素数ではない(Qは17である)
あるいは、
P = 19の時、P + 2 = 21 => 素数ではない(Qは23である)
と成り立たないですからね。
あくまでlが5で登録された最後の素数が17だから成り立ってる。全然一般論じゃない。何考えてこんな「如何にも一般論」的な記述してんだかサッパリ分かりません。
だから言ってるでしょ?悪書です。
こんな「おかしな余談」は忘れて構わない。
(そして「悪書」の記述につきあわされているこちらの身にもなってもらいたい)
いずれにせよ、「探索範囲」で考えると、ある素数Qがあったとして、Q^2は当然Qで割り切れるのでQ^2は素数ではないのが明らかです。
そうすると、素数じゃない数はどーでも良いんで、素数の候補としてはそれより1個手前の数までQより小さい素数での探索範囲とする、と言う考え方です。
詳しい話はWikipediaを参考にすること。
試し割り法:
https://ja.wikipedia.org/wiki/%E8%A9%A6%E3%81%97 …
No.38
- 回答日時:
>s=5が初めて出てきた時点で、もう素数の登録数は、
>満杯だから、5行目でいいのではと思ったのです。
>それ以降、s=5は変わりませんから。ご教授下さい。
最初に解っている素数は5のみで、Sはpに登録した
素数の数なので 最初はs=1
7が発見されるとsは2に
11が発見されるとsは3に
13が発見されるとsは4に
17が発見されるとsは5に
増え、これで満杯です。
で、「5行目でいい」とは?
全く意味不明です。
Link: http://codepad.org/Oxfd5gz9
では、以下のURLの29行目とはどういうことでしょうか?
s を表示するよう付け加えて実行してみました(29行目)。
C code - 58 lines - codepad
確かに 5 より大きくはならないようです。
s が L と等しくなった時点で f1 が 1 になり、s に加算する部分が実行されなくなるためでしょう。
LinkのpのURLでなぜ、29行目と括弧されているのかが分かりません。
ご教授下さい。5行目でいいというのは、out put の所で、s=5になっているからです。ご教授下さい。すみませんが。
No.36
- 回答日時:
>なぜ、29行目なのでしょうか?ご教授下さい。
すみませんが29行目は素数と判断できた数とその時の
sを表示しているだけですが
「なぜ」の全体が見えないですね。
No.35
- 回答日時:
>すみません。
>ここです。
>5行目の間違いだと思うのですが。
>Link: http://codepad.org/Oxfd5gz9
5行目は int main( void ) {
だと思いますが・・・
素数が発見されると素数を登録するこのコード
if ( f1 == 1 ) { /* 算法4。35行まで。 */
goto label60;
}
else { /* 算法5。43行まで。 */
s = s + 1;
p[ s ] = n;
if ( s == L ) {
f1 = 1;
}
}
s=Lでf1 が立つともはや素数は p に登録されないのは
一目瞭然だと思います。
余談ですが、BASICのコードの移植とはいえ
メインループが goto で組んであってその中に
普通の for ループがあるのはなかなかシュール(^^;
ループ制御が弱いBASICで goto が多用されるのは
仕方ないですが、さすが C で goto 多用で
スパゲッティされるとくらっと来ます(^^;
No.32
- 回答日時:
> 確かに試し割り法では、(P[i+ 1])∧2 未満であることが成り立ちますが、
> (P[i ])∧2 未満であるとは言っていない
本当にそうですか?
今、P[i]は分かってる、として、じゃあP[i+1]は今この時点で分かってるんですか?
逆じゃないですか?P[i+1]を知りたいのに、どうやって上限(P[i+ 1])∧2を先に知るんでしょうか?
Wikipediaの記述、
> 最も運が悪い場合でも、P[i+1]^2>nを満たすPiまで確かめれば良い。また、Piまで試すことでP[i+1]^2未満のnまでの判定が可能である。
ってのはそういう意味ですよ。
よく読んで下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでの一時停止と再開の方法
-
ループフリー
-
EXCEL VBA ユーザーフォームの...
-
画面を強制的に再描画させる方法
-
テキストボックスの名前に変数...
-
DOSコマンドのループ内のTIMEコ...
-
UWSCの終了の仕方
-
乱数の桁数指定、または範囲指定。
-
CSVファイルの特定の行だけを読...
-
UWSCに制限時間を付けたいです
-
流れ図(フローチャート)が分か...
-
VBAでln関数の計算
-
VBA for i=1 to lastrow
-
DoEventsが必要な理由について
-
VBAでスロットを作る
-
Escキーを押すと、中断する時と...
-
objective-cの多重ループbreak
-
ボタンが押された時にループか...
-
VBAで3秒だけ時間を止めたい
-
pinched-loopってどんな路線形態?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
UWSCに制限時間を付けたいです
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
流れ図(フローチャート)が分か...
-
DOSコマンドのループ内のTIMEコ...
-
pythonでファイルのコメント行...
-
素数表について。
-
VBAでの一時停止と再開の方法
-
「偶数・奇数の和」のフローチ...
-
DoEventsが必要な理由について
-
vb.netです。2次元配列の要素を...
-
Do whileでExitせず、ループの...
-
ループフリー
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
おすすめ情報
①はなぜあなたはそう思ったのでしょうか?ご教授下さい。すみませんが。
5, 7, 11, 13, 17の5個までが登録されるようにして。というように考えるとどうなるのでしょうか?
ご教授下さい。すみませんが。
#14の54行で、フラグを立てるのは分かるのですが、この場合のフラグは何なのでしょうか?ご教授下さい。すみませんが。
同じく#14のプログラミングの所です。
すみません。
ここです。
5行目の間違いだと思うのですが。
Link: http://codepad.org/Oxfd5gz9