No video

大きい余りの計算を64 bit 整数の範囲内でやるには?【ゆっくり解説】

  Рет қаралды 2,626

AngrySadEight

AngrySadEight

Күн бұрын

Пікірлер: 6
@user-my3ty8mz8r
@user-my3ty8mz8r 3 ай бұрын
m=m1×2^32+m2 と32bitで分割して(nも) mn=(m1n1)×2^64+(m1n2+m2n1)×2^32+m2n2 として実装したなぁ。 mi×njは64bitをでなくて2のべき乗倍はmod NのNの大きさによって繰り返し4倍法や繰り返し16倍法をオーバーフローしないように選んで計算する。
@aqua_length
@aqua_length 4 ай бұрын
これ昔符号付き32bit整数しか使えない環境でNTT実装しようとして悩んだ記憶。懐かしい 最初に思い付いたのがGarnerでゴリ押しなんですけど、大量の素数(3つほど)を用意しなきゃいけないんですよね。 その後モンゴメリ乗算に切り替えたんですけど、前処理が面倒で結局未だに凍結状態なんですよね。 さて、どう解くのか 追記 力! 繰り返し2倍法はヒューマンリソースマシーンで使ったな…懐かしい。
@user-rc2tv2ho4f
@user-rc2tv2ho4f 4 ай бұрын
aをa%mとa%m-mのうち絶対値の小さい方にする(bも同様)ではダメなのでしょうか?
@AngrySadEight
@AngrySadEight 4 ай бұрын
この方法ではできません。a%mとa%m-mのうち、小さい方の絶対値の最大値は、m/2程度になります。よって、この方法でa, bの絶対値を小さくしても、a×bの絶対値は最悪でm^2/4程度となり、mが最大で2^60程度となることから掛け算の計算結果が64bit型に収まりません。
@user-rc2tv2ho4f
@user-rc2tv2ho4f 4 ай бұрын
普通に勘違いしてました。ありがとうございます。
半分全列挙を「高速化」する【ゆっくり解説】
8:15
AngrySadEight
Рет қаралды 1,6 М.
【出題者破壊】理系すぎるアキネーターまとめ【未知ネーター】
9:07
予備校のノリで学ぶ「大学の数学・物理」
Рет қаралды 205 М.
OMG what happened??😳 filaretiki family✨ #social
01:00
Filaretiki
Рет қаралды 13 МЛН
WHO CAN RUN FASTER?
00:23
Zhong
Рет қаралды 46 МЛН
【連続講義】位相空間論 1|位相の定義
10:42
Zundamorphism
Рет қаралды 11 М.
【神回復活】ひろゆきがTKO木下にキッつい正論を刺しまくり木下撃沈【#しくじり先生 #ひろゆき #TKO 】
16:48
[Eng Sub] Something Like Differentiation | Half Derivative
12:57
ずんだもんの定理【数学解説】
Рет қаралды 108 М.