- 1 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:20:57.798 ID:JIX5od2P0
- これ↓も結構いいアルゴだと思ったんだけどエラトステネスの篩には敵わんか?
def sosulist(m):
def sosulist_(n,ls):
if n>=m:
return ls
else:
for p in ls:
if not n%p:
break
else:
ls.append(n)
return sosulist_(n+1)
return sosulist_(2,[]) - 2 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:22:30.117 ID:58IUIhRh0
- そこそこの精度だけど
エラトステネスのふるいよりも速い
アルゴリズムあるよね - 3 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:23:38.685 ID:JIX5od2P0
- そうなのか
そこら辺詳しくないわ - 4 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:24:59.585 ID:58IUIhRh0
- 高校数学の美しい物語でも紹介されてた気がする
- 5 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:26:30.525 ID:JIX5od2P0
- それなら読んだことあるかも知れない
まぁ俺はそんなに大きい素数は必要ないしな… - 20 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:13:08.409 ID:58IUIhRh0
- >>5
サイトの方な - 21 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:16:28.284 ID:JIX5od2P0
- >>20
俺はサイトしか見てないから恐らく大丈夫だ - 6 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:27:35.887 ID:BgenxLJc0
- そのプログラムもエラトステネスのふるいになってない?
平方根までのチェックのが早いだろうけど - 7 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:32:54.736 ID:JIX5od2P0
- >>6
そうなのかな?
素数のリストを作っていって、今まで出た素数で割れないものを新たに素数リストに加えるって感じだけど
エラトステネスの篩はとにかく倍数を消してく感じだよね - 8 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:46:28.579 ID:iRvq4w8N0
- >>7
「消す」の代わりに「わざわざ毎回計算する」ってだけで、やってることは同じだろ - 9 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:48:11.179 ID:JIX5od2P0
- そうだろうか…
計算量は同じ? - 10 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:50:54.058 ID:iRvq4w8N0
- 計算量自体は同じじゃね?
ただし、エラトステネスは目標となる数までのテーブルを一気に確保するのに対して、
>>1の場合は動的確保により要素数を増やし続けるから、
その分のコストが差として出る - 11 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:52:18.932 ID:BgenxLJc0
- 計算量は同じO(n^2)だと思う
ミラーラビンは
確率4の-k乗の精度でO(k*log3 n)らしい - 12 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:55:44.968 ID:JIX5od2P0
- ふむ…そうかも
調べたらエラトステネスの篩の計算量はO(nloglogn)らしい
>>1も同じかなぁ - 13 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 17:59:53.693 ID:BgenxLJc0
- 素数の頻度はloglognに近似するのか
- 14 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:01:54.324 ID:JIX5od2P0
- https://mathtrain.jp/eratosthenes
これを読む限り、mまでの素数を求める計算量は
エラトステネス=Σ[p<√m](m/p)
>>1=Σ[k=2,m]Σ[p<√k]1という感じだな
- 15 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:02:44.692 ID:JIX5od2P0
- >>1ではルート使ってなかったけど使ったものと想定してくれ
- 16 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:04:49.203 ID:BgenxLJc0
- ああ頻度が近似するんじゃなくてルート使うからかそうだな
- 17 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:08:25.864 ID:mZ33aBbi0
- 割り算自体は掛け算より遅いし
ループ上限は平方根で十分エラトステネスの方が速いだろうな
- 18 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:08:31.737 ID:JIX5od2P0
- うむ
- 19 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:11:17.237 ID:JIX5od2P0
- 「素数定理」によればn以下の素数の個数はn/lognで近似できるらしいから
>>1の計算量
=Σ[k=2,m]Σ[p<√k]1
=Σ[k=2,m]2√k/logk
=わからん
- 22 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:16:47.280 ID:JIX5od2P0
- まぁいいや
お前ら付き合ってくれてありがと - 23 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:19:47.335 ID:mZ33aBbi0
- 動的に上限を増やすなら
回転ふるいを応用すれば
それなりの速度を保ちつつメモリ使用量を抑えられるかもね確定探索の話ね。
勿論確率的探索なら話は違う - 24 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:21:36.601 ID:JIX5od2P0
- よく分からんけどthx
- 26 名前:ひみつの名無しさん 投稿日時:2020/10/27(火) 18:43:09.869 ID:JIX5od2P0
- なるほど、分かりやすい
コメント