X



トップページ数学
1002コメント398KB
高校数学の質問スレ Part410
■ このスレッドは過去ログ倉庫に格納されています
0001132人目の素数さん
垢版 |
2021/02/13(土) 19:38:21.42ID:rcfUzmW5
【質問者必読!!】
まず>>1-4をよく読んでね

数学@5ch掲示板用 掲示板での数学記号の書き方例と一般的な記号の使用例
http://mathmathmath.dotera.net/

・まずは教科書、参考書、web検索などで調べるようにしましょう。(特に基本的な公式など)
・問題の写し間違いには気をつけましょう。
・長い分母分子を含む分数はきちんと括弧でくくりましょう。
  (× x+1/x+2 ;  ○((x+1)/(x+2)) )
・丸文字、顔文字、その他は環境やブラウザによりうまく表示できない場合があります。
 どうしても画像を貼る場合はPCから直接見られるところに見やすい画像を貼ってください。
 ピクトはPCから見られないことがあるので避けてください。
・質問者は名前を騙られたくない場合、トリップを付けましょう。
 (トリップの付け方は 名前(N)に 俺!#oretrip ←適当なトリ)
・質問者は回答者がわかるように問題を書くようにしましょう。
 でないと放置されることがあります。
 (変に省略するより全文書いた方がいい、また説明なく習慣的でない記号を使わないように)
・質問者は何が分からないのか、どこまで考えたのかを明記しましょう。
 それがない場合、放置されることがあります。
 (特に、自分でやってみたのに合わないので教えてほしい、みたいなときは必ず書くように)
・回答者も節度ある回答を心がけてください。
・970くらいになったら次スレを立ててください。

※前スレ
高校数学の質問スレ Part409
http://rio2016.5ch.net/test/read.cgi/math/1608682829/
0319132人目の素数さん
垢版 |
2021/02/28(日) 12:16:08.47ID:0OxPa3B4
数理で暗算で列挙できるレベルまでに絞って解答できるように入学試験は作られているけど
暗算で列挙するのが前提なら、最初から計算機で列挙したって同じことに思えるんだなぁ。

関数f(n)はn以下の素数の数を表す関数とする。
例 : f(1000)=168
この値が2021になる最小のnの値を求めよ。

fをプログラムして
> y=sapply(1:100000,f)
> min(which(y==2021))
[1] 17579
で終了
0320132人目の素数さん
垢版 |
2021/02/28(日) 12:25:09.25ID:acOwFvcK
>>317
まず素数のリストp_1(=2),p_2(=3),p_3(=5),...を作っておいて、
関数f(N,p_n)を
f(N,p_1)=[N/p_1]=[N/2]
f(N,p_n)=[N/p_n]- Σ(k=1,n-1)f([N/p_n],p_k)
と定義して、f(1000,2),f(1000,3),...を計算するってこと。
計算量が減るんじゃない?
0321132人目の素数さん
垢版 |
2021/02/28(日) 12:27:21.01ID:0OxPa3B4
>>319
1から虱潰し探すより、fは増加関数だからニュートンラフソンで計算した方が計算時間が短縮できる。

uniroot(function(n,u=2021) fn(n)-2021, c(1,1e5))$root
fn(17578)
fn(17579)

> uniroot(function(n,u=2021) fn(n)-2021, c(1,1e5))$root
[1] 17578.55
> fn(17578)
[1] 2020
> fn(17579)
[1] 2021
0322132人目の素数さん
垢版 |
2021/02/28(日) 12:33:18.58ID:0OxPa3B4
>>320
>素数のリストp_1(=2),p_2(=3),p_3(=5),...を作っておいて
1000までの素数リストは
(1:1000)[-outer(2:1000,2:1000)][-1]
このスクリプトなら、for loopを使わない行列計算だから結果がでるのも高速。

一行で完成するのに、なんで31以下の素数リストを列挙する手間をかける必要があるんだ、と思う。

百万以下の素数の数は664579以下であることを示せ、という問題だと、百万の平方根=1000以下の素数のリストが必要になる。
0324132人目の素数さん
垢版 |
2021/02/28(日) 12:42:52.04ID:zAsBnaDU
自分が他人の嫌がる事をしても他人がそれを止められないのをみて自分の優越性に感じる人種がいるんだって
他人が嫌がる事で自分の欲求を達成してる事に何の躊躇もない時点で完全に人格が破綻しているのを理解する能力がない
もうこの年齢になったら矯正も効かない
無視するしかない
0325132人目の素数さん
垢版 |
2021/02/28(日) 13:14:11.85ID:+gcivXbK
もっと切実に目を背けたいことがあるんじゃないか
なんか必死だし
0327132人目の素数さん
垢版 |
2021/02/28(日) 13:33:40.41ID:0OxPa3B4
>>323
>301でプログラム依頼がきているからね。
代わりにあんたが答えてくれてもいいんだが。

百万以下の素数の数は664579以下であることを示せ、プログラムなしでやってみてくれ。
0328132人目の素数さん
垢版 |
2021/02/28(日) 13:39:17.90ID:WCxQUOck
プログラムの数値解なんて、もう高校数学でも何でもないだろ
専用スレでやってくれよ
無ければ、自分で立てろ
0329132人目の素数さん
垢版 |
2021/02/28(日) 13:43:16.12ID:0OxPa3B4
>>313
高校数学の範囲を超えるかもしれんがこんな計算をしてみるのも暇つぶしにいいな。

合格可能性はまったく未知でその確率分布は一様分布を仮定する。
ある受験生が一回受験して不合格になった。
次の受験で合格する期待値とその95%信頼区間を求めよ。

類題は前スレのこれ

エロ本自動販売機に何冊かに1冊無修正が紛れ込んでいるという噂があったな。

(問題)
10冊買ってみたが全部モザイク付きであったとする。噂が正しい確率を求めよ。
0330132人目の素数さん
垢版 |
2021/02/28(日) 15:09:33.52ID:+gcivXbK
プログラム計算は高校数学と分けるべきだな
それとも見てもらえないと思ってんのか?
0332132人目の素数さん
垢版 |
2021/02/28(日) 17:45:40.84ID:Tie/7gQv
>>331
それも小学生がウンコとかチンコとかいうのと同じ
精神のレベルが小学生レベルで成長が止まってる
0333132人目の素数さん
垢版 |
2021/02/28(日) 18:31:52.87ID:0OxPa3B4
>>331
次の受験で合格する期待値とその95%信頼区間を出して励ましてあげればいいのに!
0335132人目の素数さん
垢版 |
2021/02/28(日) 20:18:12.78ID:0OxPa3B4
>>334
合格率の事前確率分布を一様分布と設定したとき、

一度不合格になったという条件付き確率(=合格率)の期待値。
0336132人目の素数さん
垢版 |
2021/02/28(日) 20:19:23.58ID:GR6rPUi/
>>302 の答えって 51 ?
0337132人目の素数さん
垢版 |
2021/02/28(日) 20:39:26.82ID:Tie/7gQv
72になった

lambda = 50 + ( sqrt 2501 )

a 0 = 1
a n = floor $ ( * lambda ) $ fromInteger $ a $ n-1

main = do
print $ map ( flip mod 100 ) $ map a [ 0.. 100 ]

----

[1,0,0,99,99,98,98,97,98,56,96,76,48,36,16,80,48,80,40,4,96,80,4,64,40,96,20,72,60,56,56,52,44,60,68,72,28,92,36,36,92,40,92,92,16,56,16,16,80,8,12,48,28,48,28,60,48,16,60,68,28,8,76,48,44,32,72,96,16,16,44,28,56,92,60,84,36,68,12,40,40,8,32,0,64,28,24,88,24,92,56,4,76,84,76,16,56,80,12,8,72]
0339132人目の素数さん
垢版 |
2021/02/28(日) 20:59:56.41ID:nFf/XpIL
なんだかな
プロおじ封じを目論んだのは理解できるが
そのために出題が超高校級になったんじゃ本末転倒
0343132人目の素数さん
垢版 |
2021/02/28(日) 21:37:45.86ID:ohlDrRP/
1234567890
24680
3692581470
48260
50
62840
7418529630
86420
9876543210
0

周期性と1の位の対称性と、1つとして同じ数がこないこと、偶数の場合奇数の周期がないので5巡でリセットされること。5または10を軸としての対称性、これらを一意に証明する方法はありますか?
0344132人目の素数さん
垢版 |
2021/02/28(日) 22:54:32.25ID:GR6rPUi/
100<λ<101 .
a_n = [λ*a_{n-1}]で、λは無理数、a_{n-1}は整数だから、
a_n < λ*a_{n-1} < 1+a_n . よって (a_n)/λ < a_{n-1} < 1/λ + (a_{n-1})/λ .
よって [ (a_n)/λ ] = a_{n-1}-1 .
よって a_{n+1}=[λ*a_n]=[(100+1/λ)*a_n]
 =100*a_n+[(a_n)/λ]=100*a_n + a_{n-1}-1 .
よって mod 100 で a_{n+1}≡a_{n-1}-1 .
0348132人目の素数さん
垢版 |
2021/02/28(日) 23:28:57.83ID:Tie/7gQv
>>346
さすがに素数と合成数反対なんだと信じたい
それにしたって5までの篩で終わっちゃうけどw
0349132人目の素数さん
垢版 |
2021/02/28(日) 23:45:51.92ID:4XXGbQLR
>>301
f <- function(N){
+ a=numeric()
+ a[1]=0
+ a[2]=0
+ # a[3]=(a[1]-1)%%100
+ # a[4]=(a[2]-1)%%100
+ for(n in 2:N){
+ a[n+1]=(a[n-1]-1)%%100
+ }
+ a[N]
+ }
> f(100)
[1] 51
0350132人目の素数さん
垢版 |
2021/02/28(日) 23:50:54.21ID:4XXGbQLR
>>346
ご指摘の通り。出願ミス。
1000万以下の素数の数は664579以下であることを示せの間違い。
0352132人目の素数さん
垢版 |
2021/03/01(月) 00:02:32.47ID:iqfe9OoD
> f(1:200)
[1] 0 0 99 99 98 98 97 97 96 96 95 95 94 94 93 93 92 92 91 91 90 90 89 89 88 88 87 87 86 86 85
[32] 85 84 84 83 83 82 82 81 81 80 80 79 79 78 78 77 77 76 76 75 75 74 74 73 73 72 72 71 71 70 70
[63] 69 69 68 68 67 67 66 66 65 65 64 64 63 63 62 62 61 61 60 60 59 59 58 58 57 57 56 56 55 55 54
[94] 54 53 53 52 52 51 51 50 50 49 49 48 48 47 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40 39 39
[125] 38 38 37 37 36 36 35 35 34 34 33 33 32 32 31 31 30 30 29 29 28 28 27 27 26 26 25 25 24 24 23
[156] 23 22 22 21 21 20 20 19 19 18 18 17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8
[187] 7 7 6 6 5 5 4 4 3 3 2 2 1 1
> f(201:400)
[1] 0 0 99 99 98 98 97 97 96 96 95 95 94 94 93 93 92 92 91 91 90 90 89 89 88 88 87 87 86 86 85
[32] 85 84 84 83 83 82 82 81 81 80 80 79 79 78 78 77 77 76 76 75 75 74 74 73 73 72 72 71 71 70 70
[63] 69 69 68 68 67 67 66 66 65 65 64 64 63 63 62 62 61 61 60 60 59 59 58 58 57 57 56 56 55 55 54
[94] 54 53 53 52 52 51 51 50 50 49 49 48 48 47 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40 39 39
[125] 38 38 37 37 36 36 35 35 34 34 33 33 32 32 31 31 30 30 29 29 28 28 27 27 26 26 25 25 24 24 23
[156] 23 22 22 21 21 20 20 19 19 18 18 17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8
[187] 7 7 6 6 5 5 4 4 3 3 2 2 1 1
200を周期に繰り返すみたいだな。
0354132人目の素数さん
垢版 |
2021/03/01(月) 00:24:12.60ID:iqfe9OoD
一般解は
fn <- function(n) (100-floor((n-1)/2))%%100
floorはガウス記号と同じ
%%100は100で割った剰余を返す
でよさげ。
0359132人目の素数さん
垢版 |
2021/03/01(月) 02:16:47.45ID:oreVveLq
プログラムキチガイが出て行かないのなら
新しいスレを建てるしかないな

手計算による高校数学質問スレ

みんなでこっちに移動すればよい
どうせプログラムキチガイも新しいスレに来るだろうけどね
0360132人目の素数さん
垢版 |
2021/03/01(月) 02:31:37.35ID:oreVveLq
プログラムキチガイって小中学校の質問スレにもいるんだな
初めて知ったわ
まさに害悪
0361132人目の素数さん
垢版 |
2021/03/01(月) 06:12:08.51ID:ITG5Zqw9
え?なに?
a_{n+1}≡a_{n-1}-1 (mod 100) が示されてなお
ループ回さないと正解にたどり着けなかったの?
即割り算じゃないの?
0362132人目の素数さん
垢版 |
2021/03/01(月) 06:55:16.77ID:iqfe9OoD
>>361
設定通りやるのがシミュレーションの基本。
1から100まで順に足して総和を求めよという問題はその手順を踏む。処理しきれなくなったら公式や定理等を利用する。
0364132人目の素数さん
垢版 |
2021/03/01(月) 07:09:52.89ID:iqfe9OoD
>>347
>という事は計算精度がオーバーフローしたのか
Haskellでもそうなのか?
R言語には多倍数精度計算Rmpfrというパッケージがあるのだが、Wolframの結果と乖離していたから、信用していない。
漸化式 a_0=1, a_{n+1}=[λ* a_n ] (n=0,1,2,…) の計算に使ってみたけど精度不足なので諦めた。
0365132人目の素数さん
垢版 |
2021/03/01(月) 07:42:12.72ID:iqfe9OoD
>>329
信頼区間の算出法にはいろいろ流儀がある。
まあ、設問では事前確率分布を一様分布と設定してあるからベイズでやれという意味と解釈される。
エロ本ネタで種々の流儀で信頼区間を算出してグラフ化。

https://i.imgur.com/ijAwNUh.png

Bayesの事前確率分布はデフォルトのJefferey分布のまま。
ネタがネタなので一部にモザイクをかけたw
0366132人目の素数さん
垢版 |
2021/03/01(月) 08:03:03.16ID:xZz6CGzJ
>>365
数学の勉強なんかなんもした事ないのにそんな事わからんやろ?
お前の問題がいつも問題になってないと指摘されるのは、その「統計問題で許される事実上の既成事実化された暗黙の了解」を逸脱してるからやろ?
なんも勉強する事ない俺様ワールドで残りの人生一人で生きればいいやん?
0367132人目の素数さん
垢版 |
2021/03/01(月) 08:20:10.67ID:iqfe9OoD
>>365
理屈と膏薬はどんなところにもつく、という格言があるが、一番上の確率が負の値というのはどう理屈をつけるんだろ?
0369132人目の素数さん
垢版 |
2021/03/01(月) 08:45:21.66ID:2di4zFBU
>>361
計算機に頼ってると、こんな簡単なこともわからなくなるということを示すいい例かと
0373 【小吉】
垢版 |
2021/03/01(月) 13:37:04.42ID:uMpYjDAj
>>208
>>272
9000いくらのところに36差あるのをみつけた。
5000〜10000の中では最大。
だれか先に答えたはるからそれだと思う。
0375132人目の素数さん
垢版 |
2021/03/01(月) 15:37:43.84ID:WHqy8q4F
>>322
>一行で完成するのに、なんで31以下の素数リストを列挙する手間をかける必要があるんだ、と思う。

人の手間より計算量で考えるべきでしょう。
√Nまでの素数をリストアップしてから計算するプログラムと
Nまでの素数リストを計算するプログラムとどちらが計算量が
多いかで比較すべき。
0376132人目の素数さん
垢版 |
2021/03/01(月) 15:54:51.14ID:xZz6CGzJ
そもそもN以下の素数をリストアップするのに√N以下の素数のリストを利用するのはエラトステネスの篩そのもので別段新しくともなんともない話
しかし勉強不足のおばかちゃんは大発見と一人興奮してクソコード垂れ流す
0377132人目の素数さん
垢版 |
2021/03/01(月) 17:04:03.75ID:WHqy8q4F
>>376
エラトステネスの篩と比べて計算量が多いか少ないかって話でしょ。
しらんけど。
0378132人目の素数さん
垢版 |
2021/03/01(月) 17:14:24.00ID:xZz6CGzJ
>>377
もちろん変わらん
エラトステネスの篩そのまんま
なんも数学の勉強したことないアホが今まで発見されたことない新アルゴリズム見つけられるわけがない
0379132人目の素数さん
垢版 |
2021/03/01(月) 17:37:25.27ID:WHqy8q4F
>>378
それは>>322のプログラムのことでしょ?
0380132人目の素数さん
垢版 |
2021/03/01(月) 17:56:11.44ID:xZz6CGzJ
>>379
何が言いたいのか知らんがこんな便所の落書きで突然今まで知られてなかった素数リストアップの革命的方法なんか生まれるはずもなかろうに
ましてやあのブロおじじゃます無理
小学生でも知ってる話を“再発見”して喜んでるだけ
アホ丸出し
0381132人目の素数さん
垢版 |
2021/03/02(火) 00:21:08.16ID:/WZO5+jb
これだけ色々言われたら普通の人ならもう書き込まないんだろうけど
害悪おじさんは普通じゃないからまた書き込むんだろうね
0383132人目の素数さん
垢版 |
2021/03/02(火) 00:46:01.51ID:2ZQ+hgIV
>>380
なんか話がズレてるね。
誰かほかの人と勘違いしてんじゃないの?
素数のリストアップの方法の話なんかしてないんだけど。
0384132人目の素数さん
垢版 |
2021/03/02(火) 07:36:49.79ID:IddjJv3w
>>383
そうだな
こんなアホな話いつまでもいつまでもダラダラ引きずってスレ汚すのは良くないな
あのアホと関わると人生の損以外にはならんからな
まともな人間が決して関わってはいかない奴
0385132人目の素数さん
垢版 |
2021/03/02(火) 11:06:19.05ID:KDDWDoqg
問題の意味は小学生にもわかる問題(解法は小学校の範囲を超える)

厚さが一定で20cm×10cmの楕円形ステーキを2:1に分割したい。
切断線の長さは最低にしたい、どこを切ればよいか?
0386132人目の素数さん
垢版 |
2021/03/02(火) 11:34:38.89ID:0plK5Bfy
>>250
30ずつのグループで考えたのはなぜですか
0387132人目の素数さん
垢版 |
2021/03/02(火) 11:37:12.15ID:09FpLWOD
>>386
2,3,5の剰余だとギリギリ足りないから(30の剰余で8個も素数候補があると8×33+10=274)生まれる発想じゃない?
0388132人目の素数さん
垢版 |
2021/03/02(火) 11:50:15.92ID:0plK5Bfy
>>387
20kだと1,7,11,13,17,19だからmod5で0-4まで揃えられないってことですか
この解答すごいですね
0389132人目の素数さん
垢版 |
2021/03/02(火) 12:06:22.96ID:IddjJv3w
イヤそれは30ごとではダメだから次どうしようの話やろ
30は素数小さい方から3つとって2×3×5=30だからというただそれだけ
0390132人目の素数さん
垢版 |
2021/03/02(火) 12:49:04.91ID:KDDWDoqg
>>376
この1行コードは√N以下の素数のリストを利用していないよ。
(1:1000)[-outer(2:1000,2:1000)][-1]
あんたが、コードも読めないだけ。
0391132人目の素数さん
垢版 |
2021/03/02(火) 12:51:25.99ID:KDDWDoqg
>>385
短軸方向に切るという条件を外した問題

厚さが一定で20cm×10cmの楕円形ステーキを長軸に対して60°の角度で切って体積を2:1に分割したときの切断線の長さは?
0393132人目の素数さん
垢版 |
2021/03/02(火) 13:04:06.51ID:KDDWDoqg
>>390
outer関数って、色々な言語に使われていると思う。
Wolframにもあるし、pythonだとnumpy.outerとして同機能の関数がある。
知らなきゃ調べりゃいいのに。
0395132人目の素数さん
垢版 |
2021/03/02(火) 13:08:04.75ID:IddjJv3w
相手に不愉快な思いをさせる事に喜びを感じる事が自分の人間性の恥ずべき部分だと認識できない
改めようともしない
改める事は自分の負けを意味するから
小学生の発想
0397132人目の素数さん
垢版 |
2021/03/02(火) 14:00:37.21ID:KDDWDoqg
普通に考えて
 (1:1000)[-outer(2:1000,2:1000)][-1]
の1行プログラムで平方根をとっていると思う方がどうかしているよなぁ。
使っている関数はouterだけなのに。

sqrtの文字も入っていないのにどういう風に理解したのだろうね。

perlもCもpythonもHaskellも平方根計算はsqrt関数を使うはず。エクセルは大文字でSQRT。
0399132人目の素数さん
垢版 |
2021/03/02(火) 14:11:47.05ID:IddjJv3w
もうほっとこう
構うといつまでも続けるし
そうやって他人に迷惑をかけてる自分の行為を止められない事を「自分が優秀で力がある」と認識するタイプなので構えば構うほどコイツにとっては喜び
他人を不愉快な気分にさせる事で自分の力を誇示してきた人生なんやろ
もちろん全てのレスは他人を不愉快にさせる事のためだけに書かれてる
ほっとくしかないよ
0401132人目の素数さん
垢版 |
2021/03/02(火) 14:19:16.14ID:KDDWDoqg
>>392
1行なのだから読むも読まないもないだろうに。読んでも理解できなかったってことだろ。
0404132人目の素数さん
垢版 |
2021/03/02(火) 14:34:34.19ID:KDDWDoqg
>>377
1000を超える合成数も計算させているから、計算量は多いよ。

outerを使ったコードも読めないのに
>378みたいに、もちろん変わらんというアホもいるが。

でも10000程度なら1秒もかからず答が返ってくる。

やってみたら、0.6秒で10000までの素数をリストアップ。
> system.time((1:10000)[-outer(2:10000,2:10000)][-1])
user system elapsed
0.60 0.03 0.66

まあ、省スペースな分だけ計算量が多くてCPUに負荷はかかっていると思う。
10万にするとエラーがでた。
Error: cannot allocate vector of size 74.5 Gb
0406132人目の素数さん
垢版 |
2021/03/02(火) 17:53:50.21ID:KDDWDoqg
「pが素数ならp^4+14は素数ではないことを示せ」
という京大の問題だけどなんで5ではなくて14に問題設定したのだろう?
p^2+5でもいい気がするし。
0407132人目の素数さん
垢版 |
2021/03/02(火) 19:12:47.60ID:K/oD/Qs/
pが奇数のとき偶数でアウト。p=2 のとき 9 でアウト。
それぢゃあ中学校の問題だろ。
0411イナ ◆/7jUdUKiSM
垢版 |
2021/03/02(火) 23:35:23.06ID:+1/2s3pW
>>208
>>385
楕円型ステーキを圧縮して、
半径10の円型を2:1に分ける切断面の長さを考えると、
2θ-2sinθcosθ=2π/3
2θ-sin2θ=2π/3
20sinθ=16.66
θ=56.4068°
16.66ぐらいなんだけど、
妙に数字が並ぶところを見ると50/3なのかな?
0413132人目の素数さん
垢版 |
2021/03/03(水) 00:36:08.51ID:hMNi8ANp
>>404
>計算量は多いよ。
O(n^2)は多すぎだね。
ふつうに割り算を繰り返して素数判定する方法でもO(n^1.5)だから
その方法より勝っている。エラトステネスの篩だと0(nloglogn)で
もっと少ない。
プログラムは一行で済むかもしれないけど計算量が多すぎて駄目です。
0414132人目の素数さん
垢版 |
2021/03/03(水) 00:37:23.22ID:hMNi8ANp
×エラトステネスの篩だと0(nloglogn)
○エラトステネスの篩だとO(nloglogn)

目が悪くてスマン
0415132人目の素数さん
垢版 |
2021/03/03(水) 00:54:35.93ID:CGS3YUU8
エラトステネスの篩はdpの演習でかなり出てくるテーマなんだけどな
まぁ完全我流の俺様プログラマーもどきには何いうても通じんわな
0416132人目の素数さん
垢版 |
2021/03/03(水) 00:56:53.53ID:wf1J4znc
与えられた n 以下の素数リストの作成法

エラトステネス:(要するメモリサイズは、n 程度)
 1〜n までのリストを作成し、1を消す。
 2に印をつけて、(2より大きい)2の倍数をリストから消す。
 印を次の数字(=3)に移動し、(その数字より大きい)その数の倍数をリストから消す。
 以下同様のことを√nまで行う。

某異人:(要するメモリサイズは、n^2 程度)
 1〜n までのリストを作成する。
 (2〜n)×(2〜n)のかけ算の表を作成する。
 リストから、表に載っている数字と1を消す。

多くの人が思ってる某異人版改善案
・(2〜n)×(2〜n)のかけ算の表を作成するから、メモリが足りなくなる。
 →せいぜい、(2〜√n)×(2〜n)で十分。
・というか、表の値を保存しておく必要が全く無い。
 →2≦i≦√n,2≦j≦n/iのループの中で、i*jがリスト内にあったら消せばいい。
・iが4以上で2の倍数の時とか、iが6以上で3の倍数の時って、無駄なループしてるよね
 →この無駄を省くためには...あれ、その工夫の先にあるのって、エラトステネスの簁そのものじゃね
0417132人目の素数さん
垢版 |
2021/03/03(水) 01:07:37.86ID:hMNi8ANp
もともとの問題は1000以下の素数が何個あるか上限を見積もる
問題なので、ちと違う方向に進んでいるのでは?
素数の重複しない倍数の個数を見積もれればいいわけで、素数
を求めたいわけではない。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況