大滝本:自然数nまでの素数を求める
kalkanさん
(No.1)
おなじみ(旧)大滝本の問題ですが、良問なので現在の大滝本にも掲載されてる前提で
質問します。
iの値 for文の中の処理 while文の繰り返し回数←で
「2」「3」~の場合を計算で出してますが、この計算の意味が分からないのです。
「2」で言うと「(24-4)÷2+1」で11回と出てますが、ここの解説をお願いしたいのです。
特に最後の+1ってなんやねん!って感じです。
では、お願いいたします。
質問します。
iの値 for文の中の処理 while文の繰り返し回数←で
「2」「3」~の場合を計算で出してますが、この計算の意味が分からないのです。
「2」で言うと「(24-4)÷2+1」で11回と出てますが、ここの解説をお願いしたいのです。
特に最後の+1ってなんやねん!って感じです。
では、お願いいたします。
2025.11.23 03:24
ぼうけんじゃさん
(No.2)
私も大滝本で勉強中です。
kalkan質問の大滝本ページ数教えて下さい。
kalkan質問の「+1」はwhile分をループするための+1かと思いますが。
kalkan質問の大滝本ページ数教えて下さい。
kalkan質問の「+1」はwhile分をループするための+1かと思いますが。
2025.11.23 07:18
kalkanさん
(No.3)
返信ありがとうございます。
しかし、大滝本は2024年3月初版のバージョンなので
現在のと違うと思いますが、
あえて書くとP114 4.2 自然数nまでの素数を求める
です。
現在未掲載の可能性もあります。
しかし、大滝本は2024年3月初版のバージョンなので
現在のと違うと思いますが、
あえて書くとP114 4.2 自然数nまでの素数を求める
です。
現在未掲載の可能性もあります。
2025.11.23 08:20
おにじさんさん
(No.4)
この投稿は投稿者により削除されました。(2025.11.23 14:39)
2025.11.23 14:39
おにじさんさん
(No.5)
(24-4)÷2+1についてです。
4 6 8 10 12 14 16 18 20 22 24 (11個)
プログラムを見ると、はじめの4を数えるときにすでに1回目になっていますね。(while文1回目で、4が素数じゃありませんという意味でprime[4]←1します)
つまり、4を1個目として数えるわけですから、24まで増分飛びしながら数えると11個となります。26になったときwhile条件によりとまりますが、数えるのはαなので、これを12回目には数えていないようです(表では11回となっているので)。これを算出するにあたり、冒頭の式で計算してるわけですが、
(最大値−最小値)÷増分+謎の値
となっています。
謎の値のヒントになりうるものですが、質問者さんは、3から5に整数がいくつあると思いますか?
3 4 5
と数えて当然3個ですよね?2つではありません。
5−3+1
です。不思議ですね。ですが、考えてみれば当然で、数えなくてはいけない3もひいてるからなんですね。
数を数えるときは
最大値−最小値+1
もう公式のようなものです。
再掲
4 6 8 10 12 14 16 18 20 22 24 (11個)
(24-4)÷2+1
=(12−2)+1
これは2〜12を数えるのと同じことなんです。
質問者さんが疑問に思ったのは、きっと2で割っているからむずかしく考えてしまっているんですね。数えなくてはいけない4をひいてしまっているので、つじつま合わせで1をたしているだけなんです。
ぼくもこの問題を解きました。たしかにちょっとわかりにくい問題、解説でした。よく観察して考察すると、こういうことなんじゃないかというのがぼくの研究ですね😎ほかの方はもっとわかりやすく解説してくれるでしょう。待ちましょう!
4 6 8 10 12 14 16 18 20 22 24 (11個)
プログラムを見ると、はじめの4を数えるときにすでに1回目になっていますね。(while文1回目で、4が素数じゃありませんという意味でprime[4]←1します)
つまり、4を1個目として数えるわけですから、24まで増分飛びしながら数えると11個となります。26になったときwhile条件によりとまりますが、数えるのはαなので、これを12回目には数えていないようです(表では11回となっているので)。これを算出するにあたり、冒頭の式で計算してるわけですが、
(最大値−最小値)÷増分+謎の値
となっています。
謎の値のヒントになりうるものですが、質問者さんは、3から5に整数がいくつあると思いますか?
3 4 5
と数えて当然3個ですよね?2つではありません。
5−3+1
です。不思議ですね。ですが、考えてみれば当然で、数えなくてはいけない3もひいてるからなんですね。
数を数えるときは
最大値−最小値+1
もう公式のようなものです。
再掲
4 6 8 10 12 14 16 18 20 22 24 (11個)
(24-4)÷2+1
=(12−2)+1
これは2〜12を数えるのと同じことなんです。
質問者さんが疑問に思ったのは、きっと2で割っているからむずかしく考えてしまっているんですね。数えなくてはいけない4をひいてしまっているので、つじつま合わせで1をたしているだけなんです。
ぼくもこの問題を解きました。たしかにちょっとわかりにくい問題、解説でした。よく観察して考察すると、こういうことなんじゃないかというのがぼくの研究ですね😎ほかの方はもっとわかりやすく解説してくれるでしょう。待ちましょう!
2025.11.23 14:40
kalkanさん
(No.6)
おにじさんさん
返信ありがとうございます。
6割ぐらい分かった感じです。
それよりも本題と違いますが、下記文章が私には目から鱗でした。
もやもやしていたものが、一つ晴れたような気がします。
一生覚えておきます。
ありがとうございました。
*****
謎の値のヒントになりうるものですが、質問者さんは、3から5に整数がいくつあると思いますか?
3 4 5
と数えて当然3個ですよね?2つではありません。
5−3+1
です。不思議ですね。ですが、考えてみれば当然で、数えなくてはいけない3もひいてるからなんですね。
数を数えるときは
最大値−最小値+1
もう公式のようなものです。
*****
なるほど!!!
返信ありがとうございます。
6割ぐらい分かった感じです。
それよりも本題と違いますが、下記文章が私には目から鱗でした。
もやもやしていたものが、一つ晴れたような気がします。
一生覚えておきます。
ありがとうございました。
*****
謎の値のヒントになりうるものですが、質問者さんは、3から5に整数がいくつあると思いますか?
3 4 5
と数えて当然3個ですよね?2つではありません。
5−3+1
です。不思議ですね。ですが、考えてみれば当然で、数えなくてはいけない3もひいてるからなんですね。
数を数えるときは
最大値−最小値+1
もう公式のようなものです。
*****
なるほど!!!
2025.11.24 07:13
おにじさんさん
(No.7)
6割とのことだったので、追加で書き足しますね。
iが2のとき
j←4
while
1回目: prime[4]←1 & j 4→6
2回目: prime[6]←1 & j 6→8
3回目: prime[8]←1 & j 8→10
4回目: prime[10]←1 & j 10→12
5回目: prime[12]←1 & j 12→14
6回目: prime[14]←1 & j 14→16
7回目: prime[16]←1 & j 16→18
8回目: prime[18]←1 & j 18→20
9回目: prime[20]←1 & j 20→22
10回目: prime[22]←1 & j 22→24
11回目: prime[24]←1 & j 24→26
12回目: 11回目の最後にjが26になったのでwhile条件によりとまる。
(24−4)÷2+1 =11回
とのことなので、
prime[4]←1 から
prime[24]←1 の11回を数えている式であることがわかる。
だから、while処理を数えているわけではないと思われます。単なる数の数え方の問題だと思います。+1は、数える際のつじつまあわせの数字です。
iが2のとき
j←4
while
1回目: prime[4]←1 & j 4→6
2回目: prime[6]←1 & j 6→8
3回目: prime[8]←1 & j 8→10
4回目: prime[10]←1 & j 10→12
5回目: prime[12]←1 & j 12→14
6回目: prime[14]←1 & j 14→16
7回目: prime[16]←1 & j 16→18
8回目: prime[18]←1 & j 18→20
9回目: prime[20]←1 & j 20→22
10回目: prime[22]←1 & j 22→24
11回目: prime[24]←1 & j 24→26
12回目: 11回目の最後にjが26になったのでwhile条件によりとまる。
(24−4)÷2+1 =11回
とのことなので、
prime[4]←1 から
prime[24]←1 の11回を数えている式であることがわかる。
だから、while処理を数えているわけではないと思われます。単なる数の数え方の問題だと思います。+1は、数える際のつじつまあわせの数字です。
2025.12.07 02:35
kalkanさん
(No.8)
ありがとうございます。
後日読み込ませていただきます!
後日読み込ませていただきます!
2025.12.07 09:30
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。
広告