魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

go言語で多倍長整数演算

ぼくにとっては、プログラミング言語で、多倍長整数演算ができることが絶対条件だ。十進BASIC,、pythonrubyなどは、自然に使える。でもぼくはね、

しかも、コンパイル言語で、できるものが欲しい。いつだって、計算量が多いからね。実際、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)


以上。
たくさん書いたから、間違いがあるかも。要注意。