裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

長精度整数演算

2019年09月20日 | ブログラミング

Sum of three cubes for 42 finally solved -- using real life planetary computer

3 つの整数の 3 乗和が 42 になる解が見つかったとのこと。

なんで,42 なのかは興味がないので説明しない。

かなり大きな整数なので,R の普通の変数型 numeric(double) では扱えないので,gmp ライブラリを使う必要がある。

> library(gmp)
> x = as.bigz("-80538738812075974")
> y = as.bigz("80435758145817515")
> z = as.bigz("12602123297335631")
> ans = x ^ 3 + y ^ 3 + z ^ 3
> ans
Big Integer ('bigz') :
[1] 42

> x ^ 3
Big Integer ('bigz') :
[1] -522413599036979150280966144853653247149764362110424
> y ^ 3
Big Integer ('bigz') :
[1] 520412211582497361738652718463552780369306583065875
> z ^ 3
Big Integer ('bigz') :
[1] 2001387454481788542313426390100466780457779044591


Python の整数型は通常 64 ビット整数だが,必要に応じて精度が増やされる。ので,そのまま計算できる。

>>> x = -80538738812075974
>>> y = 80435758145817515
>>> z = 12602123297335631
>>> ans = x ** 3 + y ** 3 + z ** 3
>>> print("ans =", ans)
ans = 42


>>> x ** 3
-522413599036979150280966144853653247149764362110424
>>> y ** 3
520412211582497361738652718463552780369306583065875
>>> z ** 3
2001387454481788542313426390100466780457779044591




コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« マシュマロを食べることがで... | トップ | 多倍長精度による円周率 π の... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事