go言語で多倍長整数演算
ぼくにとっては、プログラミング言語で、多倍長整数演算ができることが絶対条件だ。十進BASIC,、python、rubyなどは、自然に使える。でもぼくはね、
しかも、コンパイル言語で、できるものが欲しい。いつだって、計算量が多いからね。実際、1並び素数の探索では、30000桁の数字が、素数かどうかを調べたわけだから。
知っているコンパイラ言語では、haskellではできる。nimでもライブラリを使えば簡単にできる。goでもできるので、今回はそれを紹介しよう
goは、グーグルが開発したシステム開発にも使える言語。c言語に比べモダンにデザインされている。文末のセミコロンはいらない。goは、python同様、実用言語。
おっと、goの基本的なことについては、またそのうち書こう。
「多倍長整数定義」
bigNum := big.NewInt(987654321987654321)
「足し算」
bigNum := big.NewInt(987654321987654321)
bigTSeven := big.NewInt(7)
bigNum.Add(bigNum, bigSeven)
987654321987654328
引き算
bigNum := big.NewInt(987654321987654321)
bigOne := big.NewInt(1)
bigNum.Sub(bigNum, bigOne)
987654321987654320
「掛け算」
bigNum := big.NewInt(987654321987654321)
bigSeven := big.NewInt(7)
bigNum.Mul(bigNum, bigSeven)
6913580253913580247
「割り算」
bigNum := big.NewInt(287654321987654321)
bigSeven := big.NewInt(7)
bigNum.Div(bigNum, bigSeven)
41093474569664903
「剰余算」
「掛け算」
bbigNum := big.NewInt(9223372036854775807)
bigTwo := big.NewInt(2)
bigNum.Mod(bigNum, bigTwo)
1
以上。
たくさん書いたから、間違いがあるかも。要注意。