はてなキーワード: 整数とは
かけ算の順序史上最も重要なエントリ10選の続編として、学術文献・出版物を選んでみました。
主な対象は、小学校5年の「小数のかけ算」です。ただし「乗数、被乗数の順」が、参考文献で言及されています。アレイや直積、アメリカと日本との違いも、見ることができます。参考文献に書かれた「乗数を operator としてみる」は、最近の教科書にも「×10」といった形で取り入れられています。
読み手の評価は「こんな教え方ではよくない」「児童の特性に配慮した指導事例だ」に分かれているように思います。「学習支援教室」は「特別支援教育」ではない点にも注意が必要です。
1つの調査問題(4つの式にそれぞれ○か×を付ける)に、「たし算の順序」と「かけ算の順序」が入っています。
平成20年告示の学習指導要領に基づく内容ですが、小学校2年のかけ算の単元で、何を重視しているか、教科書ではどのように出題して学びを促すかについては、現行(平成29年告示)の学習指導要領や、令和2年度・令和6年度使用の教科書においても、大きな変化は見られませんので、現在においても参考にしてよいものと考え、取り上げました。
82ページの「第2学年や第3学年では,読み取った数を,「1つ分の数×いくつ分=全体の数」と表現できることが重要であり,逆に,この立式ができているかで,数の読み取りができているかを判断できる。」が真髄と言っていいでしょう。2011年の初版や、異なる著者による2018年の書籍にも、同じ趣旨の文が含まれています。
提言の中に「乗数や除数が整数から小数や分数になったとき、演算の意味が拡張し統合されることをより一層強調すべきである。」という文があり、翌年(平成29年告示)の小学校学習指導要領の算数に、「乗法及び除法の意味に着目し、乗数や除数が小数である場合まで数の範囲を広げて乗法及び除法の意味を捉え直すとともに、それらの計算の仕方を考えたり、それらを日常生活に生かしたりすること。」として反映されています。
学術会議で「かけ算には順序がない」を提言すれば、後の学習指導要領改訂の際にも反映される可能性がある、と考えることもできます。
高校までで学習する数の演算は、「環」や「体」で考えることもできますが、この文献では「Z-加群」を使用しています。担任教師とのやりとりに、Z-加群のほか、「私の子供は帰国子女だからごく自然に3×2と考えたのだと思う」が含まれています。
海外の乗法・除法研究(「かけ算の順序」に関する研究ではなく)を手早く知るのにおすすめです。
「かけ算の順序論争」における古典と言っていいでしょう。
2010年からのネットにおける「かけ算の順序」について、ひと区切りを付ける形になったものです。2017年6月に、同年告示された学習指導要領に基づく「小学校学習指導要領解説算数編」のPDFファイルが文部科学省サイトでダウンロードできるようになるまで、ネットの論争は下火となった(とはいえ、2015年には「足し算の順序論争」が発生したのですが)ように感じます。
「かけ算の順序史上最も重要な論文10選」にはしませんでした。査読付論文だけでなく、書籍やその一部、査読を経ていない文書からも選びました。
「かけ算の順序史上最も重要なエントリ10選」でリンクした「かけ算には順序があるのか」「日常生活の中で計算が活用できる子供の育成を目指した学習指導の一試み」、それと海外文献は、今回、対象外としています。
よく引用されていることや、入手が容易であることは、選定の際に考慮しましたが必須の要素ではありません。「かけ算の順序」について直接主張していない文献も、取り入れています。
昨晩は printf() しながらビンゴの玉(?)をスプライトで表示ところを作ったよ。
いわゆる画面演出やね。
オブジェクトが出てくるときは減速 オブジェクトが出ていくときは加速 コレ常識
こういうのは手癖でもう作れるようになってるンゴ!
へたっぴが作ると「パッと出て、パッと消える」みたいな感じになるけど算数ができないとこうなるんだよね。
減速も加速もレトロゲーム()なら整数の計算だけでもできるよん
高校の数学で習ったと思うけどn(n+1)/2 で 1+2+3+4+5+6...+n が求められるから
終着点から n フレームの時の距離とすればいい感じに減速にできる逆算すれば加速になるって寸法よ
これがわからない人は二次曲線とかの少数をつかうから動きがカクカクになって草
止めずに素早く動かすならそれでもいいけどとまるときにカクカクってなるのだけは後味わるいから散々つくらされたのでもう手癖で覚えてるンゴ
4人組みの粒子回収ループを3回でチャージ完了できれば、作業時間20秒程度で爆発クールタイム的にいいと思うよ。
切れ目なく香菱爆発を回していきたいなら
グゥオパァー含めスキル全ヒットかつ他人のチャージ率サポートなしで
ベネットは240%と少し欲しいよ。(実際は230%台でいいはず)
(他二人や生成量で変わってくるよ)
ベネシャンに限りチャージ盛れるだけ盛ったほうがいい、はあまり参考にならず、サブOP少しで自然に達成できそうな値に収まってると思うよ。
ベネットは武器攻撃力や旧貴族4だけ見てると足りない場合があるよ。
香菱とベネットの爆発をできるだけ同時に溜めたいよ。
256.41%:ベネットのスキルだけで香菱の爆発溜めるぜ! 5,6ループするぜ!
238.10%:グゥオパァーを4ヒットさせる自信があるぜ! 4ループするぜ!
200.00%:グゥオパァーを4ヒットさせてベネットで受け取る自信があるぜ! 4ループするぜ!
232.56%:祭礼行秋を持っててスキル回しが上手いぜ! 4,5ループするぜ!
232.56%:祭礼行秋を持っててスキル回しが上手くてグゥオパァーを4ヒットさせる自信があるぜ! 3ループ目指すぜ!
192.31%:祭礼行秋を持っててスキル回しが上手くてグゥオパァーを4ヒットさせる自信があるぜ! 4ループで妥協だぜ!
+
ベネットと香菱(シャンリン)の組み合わせで元素爆発をええかんじに使える方法を考える。
基本はベネットスキル単押し → シャンリンで受け取りの動きである。
なお計算はAI頼りである。ちょいちょいポンコツになるので保証はしない。
漁獲 45.9
絶縁 20
の116.8
サブOPで少し上がって、合計220%と考える。(サブ効率4.5 5.2 5.8 6.5 と、ひとつ付けば220以上。最低221.3)
炎粒子を受け取ると3チャージなので、爆発80を得るには
80<=((3*(x/100))*n)
シャンリンが表で炎粒子を13個受け取れば爆発が溜まる
がスタートとなる。実質シャンリンのチャージ効率は固定なので、粒子の組み合わせやそれにあわせたベネットのチャージ効率が俎上だ。
ではベネットの爆発60を溜めるには。
ベネットは裏で受けるので
60<=((1.8*(y/100))*n)
nは13なので
約256.41になる。
控え粒子上昇量は出場の半分以上はあるものの、爆発必要量は少ないが半分ではないので必要チャージは出場シャンリンより多くなる。
サーンドルの渡し守 77.9(45.9+32)
で243。
サブOPで13.41稼げばいいのでそこそこ現実的な値となる。(低オプ4.5*3=13.5)
改めて、炎粒子13個でシャンリン220、ベネット256.41で同時に爆発が溜まる。
ベネットの粒子生成量は2-3の2.5なので、13/2.5=5.2
5か6回スキル単押しからの交代受け取りを行なう計算になる。概ね5だろう。仮に全部2粒子なら7回必要だ。
ベネットの粒子生成量は何度か使いそうなので列挙しておこう。
3回 7.5
4回 10
6回 15
改めて、ベネット粒子生成シャンリン回収ループ5、6回でシャンリン220、ベネット256.41で同時に爆発が溜まる。
ベネシャンループのとき、手空きのシャンリンにより概ねグゥオパァーも出撃するだろう。
グゥオパァーの粒子量はベネットと違う意味で安定しないが、全ヒットで4粒子。7秒なのでループ中に完了する見込みである。
グゥオパァー粒子をシャンリンが出場して受けるならばベネット負担分の13粒子から単純に4引けばいい。9粒子になるので/2.5の3.6。ループ回数が4に減ると考えるといい。
ただ、ベネットの粒子を受け取るだけのシャンリンがグゥオパァーの粒子を全部受け取れるとは思えない。
シャンリンがグゥオパァー粒子を控えで受け取る場合(1.8)、表で受け取る粒子1個数が変動するには何個か。
80<=((3*2.2)*12) + ((1.8*2.2)*m)
同様に
11粒子にするには1.8粒子2個
10粒子にするには1.8粒子4個
9粒子にするには1.8粒子6個(これはグゥオパァーでは作れない)
になる。
出場、控えの違いによる必要な出場して受ける炎粒子量9~10粒子の差はベネットの粒子生成量から10粒子のほうに丸め込まれる。全ヒットのときループ回数にして4回、一部外して12、11粒子必要になると5回の確率が高くなる。
シャンリンの爆発に必要なベネットのスキルによる元素生成量は10粒子になった。これにグゥオパァーの粒子をあわせてベネットの元素チャージはどう変動するか。
ベネットのほうは
すべて出場で受け取れば
60<=((1.8*(y/100))*10) + ((3*(y/100))*4)
200
すべて控えで受け取れば
60<=((1.8*(y/100))*10) + ((1.8*(y/100))*4)
約238.1
当たったり外れたり出場だったり控えだったりを書くと
60<=((1.8*(y/100))*10) + ((3*(y/100))*n) + ((1.8*(y/100))*m)
(n,mは0から4、n+m<=4)
だが、定数10はそもそもシャンリンがグゥオパァー粒子をすべて受け取れる前提なので、n+m=4のパターンだけ考えればいい。
n m y の最小値
1 3 227.27
2 2 217.39
4 0 200
グゥオパァー全はずしの最悪の256
グゥオパァー全出場受け取りの最良の200
などを目安に腕前と相談していくことになる。(出場受けを狙うとローテーションスピードが犠牲になる可能性もある)
下げれば下げるほど外したときの5、6回ループでベネットのチャージが足りなくなり、リスク増。
どちらにしても200%を超える必要があるため、時計はチャージにしたいし原木刀のチャージ効率では心もとないので基礎攻撃力も高く計算が楽なサーンドルの渡し守が合っていると思う。
グゥオパァー粒子は全ヒットでシャンリンの状態に関係なくループ回数を4回にする。
よってグゥオパァー粒子はベネットで受けたほうがお得。
ベネットは最高でチャージ効率200%まで下げられるが、グゥオパァーが外れるたびにシャンリンは溜まるがベネットは溜まっていない、という状態になりやすい。
もうここまででグゥオパァー込みの詳細な組み合わせは諦めてるわけだけど、残り二人からの元素供給があり頭はカオスの局地に至る。
他元素粒子は出場で1、控えで0.6となる。もはややってられない。
ここでは簡単に行秋*2を考えてみる。
祭礼行秋のスキル*2で水粒子が10個出るとなると、控えの二人には6エネルギー獲得することになる。
一応計算式を置いておこう
80<=((3*2.2)*n) + ((0.6*2.2)*10)
これで必要炎粒子が13から11個になる。6回ループの場合がかなり減り5回で安定してくるだろう。
グゥオパァーでフルヒット控えで-3粒子になると、必要数8でとうとう3回ループ7.5生成で溜まる公算が出てくる。
程度なら5秒以内で済みそうだが、4人になると面倒この上ない。
また、ループ回数の減少はベネットの必要チャージ量を上げるはずだ。
取得炎粒子が11個になったが、控え水粒子が控えで取得していた炎粒子以上をカバーするので
60<=((1.8*(y/100))*11) + ((0.6*(y/100))*10)
一方、グゥオパァー粒子は行秋に吸われやすくなる。全て控えで取得するとして、シャンリンの3回ループにあわせようとすると7.5
で…
222=6
223=7
と平均7.5を現実的に割りやすくなるので、ここは7で計算しておくと、
60<=((1.8*(y/100))*7) + ((1.8*(y/100))*4) + ((0.6*(y/100))*10)
3ループを目指さず、4ループでベネットのチャージ効率を下げたい場合は、
60<=((1.8*(y/100))*10) + ((1.8*(y/100))*4) + ((0.6*(y/100))*10)
192.31。
200を切ってきた。
時計51.8+70突破20+原木刀30.6でまかなえる計算だ。
整理して
行秋スキル*2を追加して
グゥオパァー抜きで高確率5回ループでベネットが232.56に減少
グゥオパァーフルヒットでループ回数3の可能性も。ベネットはグゥオパァー控え取得でも3ループ232.56%
グゥオパァーフルヒットでループ回数4で妥協。ベネットはグゥオパァー控え取得でも4ループ192.31% ← 原木刀チャンス!
ただ、実運用では
ベネシャン溜まる→行秋スキル爆発→ベネシャン爆発
と行秋の粒子が溢れるパターンも多そうで、どこまで行秋粒子を勘案するかはまたローテーションスキルに依存するだろう。
それと祭礼のクールタイムが初期で30秒、精錬を重ねるのも無課金だとあまり現実的ではないので、1回5+4キャラ目の3粒子*2などの参考値程度にしてほしい。
4人目はほんとうに粒子量もだれが出場で受けるかもバフ切れもまちまちなので割愛。雷電なら崩壊するし。ループ回数が変わらない程度にベネットの必要効率が下がるものと思っている。
3ループを目指すほど適切なスキル回しに生成量の運、ベネットのチャージ効率が必要になってくるわけだが、チャージ完了は早ければ早いほどいい、というわけではないので実際のループ時間を見てみる。
サンプル
行秋スキル ベネットスキル シャンリンスキル ロサリアスキル ベネットスキル シャンリン受け取り ロサリアスキル ベネットスキル シャンリン受け取り
ベネット生成量しだいだが…チャージ率を上げて3ループでチャージできるようにした
戦闘中は雨すだれが欲しいので行秋始動にしたが、5粒子にサーンドルが発動しないため必要チャージが上がる。
実践を通してみると
ベネットがサーンドル発動中で235.9%では足りず241.1%
もう一ベネシャンループを追加するとだいたい23~5秒ほどである。(ベネットのCT空け待ちが入る)
シャンリンの爆発クールタイムが20秒なので、3ループではややもてあます感があるか。
まあ実際は移動や爆発演出、行秋爆発のための通常攻撃などが入るので、3ループでチャージ完了は実践的なライン、チャージ率で狙いどころだろう。
逆説的に、これ以上早くチャージが溜まってもCTが空けていないわけで、シャンリンのチャージ盛り盛りは過剰という話になってくる。
(ロサリア、wikiでは3粒子固定だけどたしかに2粒子に見えるときも低確率であるんだよなぁ)
あとは最初のまとめになるとして、「ベネットのチャージは盛れるだけ盛れ」はベネシャン以外での話、というか入門では違うのかなと感じる。(サブで30とか40とか盛れる厳選でシャンリン側が変わってきそうという)
ベネットを他に組み込むなら盛れるだけ、になるがベネシャンはとくに他からの粒子供給や相対的にベネット出場時間が長くなる傾向から逆にチャージ効率はどんどん下げられるのでは?と感じていて、計算してやっぱりそうなのでは?と。
効率230程度ならサブOPしだいの絶縁込みでチャージ時計も外せそうで融通が利きやすくヒーラーにもしやすそうである。残り2セットも自由だ。
逆にとりあえず旧貴族だぜ原木刀だぜとしただけではややチャージ不足になりそうな予感。とはいえ素早いスキルを自分で受け取ればいいだけなのでひどくずれるわけでもないのだろうと思う。あんまり0から稼ぐ系の解説ってないし知らんけど。
実際の動きで言うと
ベネット爆発 ベネットスキル シャンリン受け取りチャージ完了 シャンリン爆発
と、チャージ完了は一回ずれてもいい。ただまあ状況把握が複雑になるし、裏で受けるチャージ効率を高めることは大変なので表で受けるなど動きも変わってくる。
具体的には、Xでちょっと話題になってた若手育成方法なんだけど、今は特にムリ(時代にそぐわない)かなあというやつ。
(特にITエンジニア界隈に限った話でも無くて、回路設計なんかでも昔は良く見た)
以下の手法なんだけど、これ昔は良く見たし、今もまあまあ見るんだけど、周りのフォローが無いともう結構厳しい。
・ベテランが2,3時間くらいで終わるタスクを3日設定でアサインする
・タスクの説明をする時に細かところまで話さない。大枠と、完了条件の詳細だけ伝える。その過程で仕様が曖昧な時に自然に聞けるスキルを鍛える。
・20分自分で考えてわからなかったら聞きにこい。その時は「今何に悩んでて」「どういうアプローチで解決させようとしてるのか」を 両方説明せよ、と伝える。目的と取るべき手段を相談できる癖を叩き込む。
・変な実装し始めてたら、「そもそもこのタスクは何をするんだっけ?」と伝えて、セルフで脱線を検知できるような感覚を身につけさせる。
え!こんなのスゴイ優しいじゃん、良い教育方法じゃんって思うかもしれないんだけど、コレ第三者目線だとそうかもだけど、若手目線だと地獄なんだよね。
これ、「3の倍数はFizz、5の倍数はBuzzって出すようなの作っといて。3時間くらいで」みたいな感じの指示になるんだよね。
で、ぼちぼち実装してたら「あー、そこはそういう関数にするんだ、このタスクの目的ってなんだっけ?」みたいな口出ししてくんだよね。
最悪だよね。
指示出し側にはおそらく正解があるんだけど教えてもらえなくて、自分のやり方で実装してると口出ししてくんの。
さらに、仕様が曖昧で、聞くとそこしか答えてくれない(書いてないけど、教育目的だと先回りして詳細を補足したりしないと思うので)
それで「悩んでること」と「どう解決しようとしてるか」をセットで聞きに来いって、ほぼ完成形で聞きにこさせんだよね。
例えば、「3の倍数かつ5の倍数の場合の仕様に悩んでまして」「FizzBuzzと出すつもりです」みたいな。
若手が効きたいのは「指示された以外の詳細で決まっていることはありますか?」なんだよね。
例えば、「1~100までの間で出力するようにしとくか」みたいな若手が実装してたら、たぶん「あー、依頼したタスクの目的はなんだっけ?」とか割り込んでくるんでしょ。
なら最初から「任意の数に対して対応可能な形で実装しておくように、整数以外が入る可能性あり」みたいな条件付けて出しとけや。
みんな余裕があったから。
「あ、それ教育目的だからガンガン聞きに行って良いんだよ、期待されてるってことだよ」みたいなフォローを入れる同僚とか上司が必ずいた。
あと、そもそも同期がわりと数が居て、昼めし食いながら愚痴を言いあったりすることで、あーどっこもそんな感じなのね、という納得感があったから。
今はどっちもない。
若手をバカにしない。
前述の、ベテランと若手を明確に区別した上で、能力をバカにしてないとできない手法なんだよね。
明確に「これは教育です」「勉強会です」という時間を設けてやるのであれば、パワハラにはならない。
勉強会で、クイズです正解は何でしょう?なら別に問題無いから。
例えば「俺がこの仕様を実装するときに、例えばこんな感じで実装進めるんだけど、タスクの目的から乖離してきたなと思った段階で指摘してみて」みたいなやつ。
権力勾配がある状態で、権力のある側が無い側に対して目的と情報を伏せるから。
「そういう常駐先が多いので、その訓練をします」と宣言して実施しててもご時世的にキツイのに、おそらくそういう宣言すらしてないでしょ。
UNIQLOで冬服選んできてって言われて、外出用、全部で2万以下ねって言われてる感じね。
で、じゃあアウターでも買うか、ヒートテックもいるかなーって選んでたら「あー、そういう色選ぶんだ?」みたいに言われるヤツね。
え?なんか指定ありましたっけ?って聞くと、いやいや外出用だよ?目的考えてみてよ?みたいな正解言わないヤツね。超ウザいでしょ。
教育目的として、これを明確に宣言して結果に差が出ること無いよ。
勉強なのでベテランと違う進め方してるし、クイズだから正解伏せてるって、ちゃんと説明できるから。
ベテランと違って俺は嫌がらせを受けているっていうのがハラスメントだと感じる理由なんだから、嫌がらせじゃなくて目的が明確にあると伝えるだけでずいぶん違うよ。
(ちなみに、コストをかけて勉強会を開催するのが一番イージーです。IT業界じゃないけどウチは余裕が無いからこそ完全教育目的の時間を取ってる)
ただまあ、採用コストかけて雇った若手エンジニアが辞めるというフィードバックを受けてなお手法変えないんだから信念があるんだろうし、それで辞めない若手が入ってくると良いね。
わかった、ほんなら「量子コンピュータ」について話すで!
量子コンピュータは、古典的なコンピュータとは全く違う原理で動くんや。
基本的な単位は「キュービット」で、これが通常のビット(0か1)とは異なり、0と1の重ね合わせ状態を持つことができるんや。つまり、量子コンピュータは同時に複数の計算を行えるポテンシャルを持っとるんや。
そのおかげで処理速度が速くなったり大規模なデータ分析が可能になるんや。
以下にもう少し詳しく解説していくやで。
重ね合わせとは、キュービットが0と1の状態を同時に持つことや。
一方、エンタングルメントは、複数のキュービットが互いに強い相関を持ち、一つのキュービットの状態が変わると、他のキュービットの状態も即座に変わることを指すんや。
この現象が量子コンピュータの強力さを引き出すんやけど、理解するのが難しいところや。
たとえば、ショアのアルゴリズムというのは、整数の素因数分解を効率的に行えるんや。
これが実用化されると、現在の暗号技術が崩れる可能性があるから、セキュリティの面でも大きな影響があるで。
量子コンピュータは非常に繊細で、外部の環境からのノイズによってエラーが発生しやすいんや。
これを克服するために、量子誤り訂正という手法が開発されとる。
これは、冗長なキュービットを使ってエラーを訂正する方法やけど、従来のコンピュータに比べて非常に複雑や。
今のところ、量子コンピュータはまだ実用化の段階には達してへんけど、いくつかの企業(例:IBM、Google、D-Waveなど)が開発を進めてるで。
指数関数 \( y = e^x \) を x で0.5回微分することは、一般的な整数次数の微分とは異なり、一般的な微積分の範囲を超えた「分数微分」という特殊な概念に関わる。
分数微分の定義や計算にはいくつかの方法があるが、一つの広く使われる手法はリーマン-リウヴィルの分数階微分である。この方法を用いて \(\frac{d^{0.5}}{dx^{0.5}} e^x\) を計算することができる。
\[ D^{\alpha} f(x) = \frac{1}{\Gamma(n-\alpha)} \left( \frac{d}{dx} \right)^n \int_0^x (x-t)^{n-\alpha-1} f(t) \, dt \]
ただし、 \(\alpha\) は分数階(ここでは0.5)、 \(n\) は \(\alpha\) より大きい最小の整数(ここでは1)、 \(\Gamma\) はガンマ関数を表す。
簡略化して言えば、分数階微分は膨大な計算を伴うが、\(\frac{d^{0.5}}{dx^{0.5}} e^x\) の場合、結果としてまた別の指数関数と特殊関数に帰着することが多い。具体的な結果としては複雑な式になるが、代表的な特殊関数である「ミッタク・レフラー関数」が利用されることがある。
このように、個別に詳細な計算をするには高度な数学的手法が必要となり、具体的な数値計算は専用の数値解析ソフトウェアを用いることが推奨される。
結論として、指数関数 \( e^x \) の 0.5回微分は一般的な関数にはあまり見られない特殊な形を取り、分数微分の特殊な理論を用いる必要がある。
12とか60とかでひとまとまりとする単位が使われるのは、約数が多いからというのが理由。1、2、3…とカウントアップする使い方だけでなく、1/2、1/3、1/4…みたいに大きなものを分割する使い方が多いときに便利。10進だと2分割か5分割以外は整数にならないが、12進だと2、3、4、6分割が整数。60進だとさらに5分割も整数。角度なんてその最たるもので、1周を半分にしたり6等分したりする使いかたが便利だから約数が多くなるように1周=360度とする。1箱10個入りの商品は、箱に1x10か2x5のどちらかで箱詰めすることになる。1個の形がどんなものかによるけど、2x5でもだいぶ細長い形になることが多くなって扱いづらい。12個入りなら、1x12、2x6、3x4に加えて、さらに2x2x3という3次元的な詰め方もできる。だから1ダース=12個。
基本的に「2か3」x「1桁の数」=「2桁の数」になる時
積の1桁目は元の1桁の数より大きくならない
この法則の唯一の例外が3x6=18なので、こいつだけ大きすぎると感じる
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18
3x4=12
3x5=15
3x6=18
3x7=21
3x8=24
3x9=27
n,k,i は一桁の数
2n = 10k + i
2n - i = 10k
n - i = 10k - n
よって積の一桁目は元の数より大きくならない
3n = 10k + i
3n - i = 10k
n - i = 10k - 2n
一般解: ax+by=cax + by = cax+by=c の整数解は、 x=x0+bgcd(a,b)t,y=y0−agcd(a,b)tx = x_0 + \frac{b}{\gcd(a, b)} t, \quad y = y_0 - \frac{a}{\gcd(a, b)} tx=x0+gcd(a,b)bt,y=y0−gcd(a,b)at ここで、gcd(a,b)\gcd(a, b)gcd(a,b) は aaa と bbb の最大公約数であり、x0,y0x_0, y_0x0,y0 は特殊解です。
ax2+bxy+cy2+dx+ey+f=0ax^2 + bxy + cy^2 + dx + ey + f = 0ax2+bxy+cy2+dx+ey+f=0 の整数解が存在する条件や特殊解の求め方には様々な手法がありますが、一般的に公式化された解法は存在しません。問題に応じて場合分けや代数的手法で解を求めることが一般的です。
ペルの方程式: x2−Dy2=1x^2 - Dy^2 = 1x2−Dy2=1 の整数解 (x,y)(x, y)(x,y) を求める方法が知られています。特に DDD が平方数でない場合、無限個の整数解が存在します。
二次式の因数分解: ax2+bx+c=0ax^2 + bx + c = 0ax2+bx+c=0 の整数解 xxx を求めるために、因数分解を用いる方法があります。
偏差値46の高校から偏差値35の大学に行って、その後自分比で結構勉強して、何とかMARCHと言われるレベルの大学院に受かった。
専門科目と英語は勉強したので、授業には問題なくついていけている。統計も勉強したので、ギリギリだけどついていけている…多分。
そこでタイトルの件なのだが、先月から大学経由の紹介で、小学生に勉強を教えなきゃいけないことになった。小2で算数詰んだ発達障害・軽度学習障害(診断済み)の自分にできる気がしなかったのだが、色々あって断れなかった。この間は小4の宿題をサポートしないといけなかったんだけど、1問も分からなくて黙ってることしかできなかった。唯一、1.5kgは何グラムか聞かれて、150gと答えた。後でググったら1kg=1000gだと知って撃沈した……
というわけで、この2週間泣きながら小学生の算数ドリルをやってるのだが……
でもさ、文系とは言えども、大学院生が小4の算数の理解に苦しんでるとか、一般的には理解しがたいじゃん。自分のためにも義務教育レベルの算数は学び直しした方が良いって思ってるし、取り敢えず四則演算、小数点、分数、割合、時速の計算あたりはマスターしたいなと思ってる。
算数を覚えたら、見える世界が変わるかな。貯金できるようになるかな。消費税の計算できるかな。調味料の割合を間違えずに料理作れるかな。もうちょっと頑張ってみる。
なんか今頃になって小数の丸め誤差の話が盛り上がってるんだけど
そもそもできる限り小数を使わないっていうのはプログラミングの基本でしょ
割と適当でいいものについては小数(float)を使うけど厳密なところは整数(integer)にしましょうって最初に習わないの?
例えば日本だとあんまり馴染みが無いけれど海外だと金額はだいたいが小数で扱われてて
$5.3-$2.8 みたいな計算をするんだけど
ところがそもそもドルじゃなくてセントにしてしまえば何も問題は起きない
システムで扱う単位をセントにしておいて表示するときにドルにすればいいだけ
他にも長さを入れるときにメートルで入れると小数を使わないといけなくなるからミリメートルで入れる、とか
時間も秒単位だと誤差がでるからミリ秒とかマイクロ秒で入れる、とか
精度が求められてないとかそもそも精度に意味が無い場合は小数使えばよくて
まぁUnixtimeがfloatで入ってても問題無い場面はあるとは思うけどね
DecimalだとかBigDecimalだとか議論する前に本当に小数計算が必要なのかよく考えて欲しい
ワイ:
1 以上の整数 N と X が与えられ、N を割り切ることが出来る X 以下の整数を、O(min(sqrt(N),X)) 未満の Complexity で得られるアルゴリズムはありますか?
Claude3 Opus:
はい、O(min(sqrt(N),X))未満のComplexityでNを割り切ることができるX以下の整数を求めるアルゴリズムがあります。以下にそのアルゴリズムを示します。
def find_divisors(N, X):
divisors = []
for i in range(1, min(int(N**0.5) + 1, X + 1)):
if N % i == 0:
divisors.append(i)
if i != N // i and N // i <= X:
divisors.append(N // i)
return divisors
このアルゴリズムでは、1からmin(sqrt(N), X)までの整数を順番に調べていきます。各整数iについて、Nがiで割り切れるかどうかを確認します。割り切れる場合、iはNの約数なのでdivisorsリストに追加します。さらに、i^2 != Nの場合、N/iもNの約数となるので、N/iがX以下であればdivisorsリストに追加します。
このアルゴリズムのComplexityは、forループがmin(sqrt(N), X)回まで実行されるため、O(min(sqrt(N), X))となります。
例えば、N = 24, X = 10の場合、このアルゴリズムは以下の約数を返します。
[1, 2, 3, 4, 6, 8]
このアルゴリズムを使用することで、O(min(sqrt(N), X))のComplexityで、Nを割り切ることができるX以下の整数を求めることができます。
ワイ:
Claude3 Opus:
申し訳ありません。ご指摘いただきありがとうございます。O(min(sqrt(N), X))未満のComplexityで、Nを割り切ることができるX以下の整数を求めるアルゴリズムを考えてみます。
以下のアルゴリズムは、O(sqrt(X))のComplexityでNを割り切ることができるX以下の整数を求めます。
def find_divisors(N, X):
divisors = []
i = 1
while i * i <= X:
if N % i == 0:
divisors.append(i)
if i != N // i and N // i <= X:
divisors.append(N // i)
i += 1
return divisors
このアルゴリズムでは、1からsqrt(X)までの整数を順番に調べていきます。各整数iについて、Nがiで割り切れるかどうかを確認します。割り切れる場合、iはNの約数なのでdivisorsリストに追加します。さらに、i^2 != Nの場合、N/iもNの約数となるので、N/iがX以下であればdivisorsリストに追加します。
このアルゴリズムのComplexityは、whileループがsqrt(X)回まで実行されるため、O(sqrt(X))となります。sqrt(X)は常にsqrt(N)以下なので、このアルゴリズムのComplexityはO(min(sqrt(N), X))未満です。
例えば、N = 24, X = 10の場合、このアルゴリズムは以下の約数を返します。
[1, 2, 3, 4, 6, 8]
このアルゴリズムを使用することで、O(min(sqrt(N), X))未満のComplexityで、Nを割り切ることができるX以下の整数を求めることができます。再度の考察で間違いがあればご指摘ください。
ワイ:
N=40, X=5 の時、答えはどうなりますか?
Claude3 Opus:
N = 40, X = 5の場合、上記のアルゴリズムを使用すると、以下の約数が返されます。
[1, 2, 4, 5]
しかし、40を割り切ることができる5以下の整数には、8も含まれています。上記のアルゴリズムでは、8が見つかりません。これは、アルゴリズムがsqrt(X)までしか調べないためです。sqrt(5)は約2.23で、8はこれより大きいため、見逃されてしまいます。
この問題を解決するには、アルゴリズムを修正する必要があります。以下は、修正したアルゴリズムです。
...
”40を割り切ることができる5以下の整数には、8も含まれています。”
ワイ:
1 以上の整数 N と X が与えられ、N を割り切ることが出来る X 以下の整数を、O(min(sqrt(N),X) ) 未満の Complexity で得られるアルゴリズムはありますか?
ChatGPT:
指定された問題に対するアルゴリズムを設計する際には、いくつかの異なるアプローチが考えられますが、要求されている計算量 O(min(sqrt(N), X)) 未満を達成するのは非常に挑戦的です。一般的に、ある数Nの約数を見つけるプロセスは、最悪の場合でもsqrt(N) の計算量を要します。この計算量は、1 からsqrt(N)までの数でNを割ってみるという基本的なアプローチに基づいています。
X以下の整数でNを割り切る必要がある場合、探索範囲がX以下に制限されるため、計算量はさらに小さくなる可能性がありますが、基本的なアプローチでは依然としてsqrt(N)の計算量が最良です。
...
以下特殊条件であれば小さくなるかもね、みたいな話。
ChatGPTはフィードバックを通して出来ないことをちゃんと「出来ない」と言う、というチューニングがされているような気がする。
一日の長だね。