R言語のこと調べていて、そう言えばと思い出したのがMathematica。マセマティカ自体は高いので企業や学校でしか使えないと思うけど、Wolframリサーチのサイトがすごいですよね。数学関係の記事の宝庫になっていると思う。Mathematicaを買わなくてもこのサイトは読めるので、参考になります。きょうは素数というキーワードで検索をかけたらMathematicaでは10億番目の素数を求める、というような場合のためのPrimeという関数があります、と書いてあった。
10億番目というのがさすがMathematicaで、とりあえずJ言語ではどうかとやってみました。
p:10^9
limit error |
p:10^9 |
ほう、10億ではエラーになるけど、1億なら大丈夫! 貧乏人のMathematicaとしては健闘していると思う。それにMathematicaだってわたしのマシンに入れたらどうなるかわからないし。
少し実験。この素数を掛けたり、掛けた結果を素因数分解できるかどうか。
x=: x: p:10^8 NB.拡張整数にする x: x ^ 2 NB.二乗する 4153748690663712001 NB.オッケー q: x: x ^ 2 NB.q:で素因数分解を試みる
nonce error NB.nonce errorとは? |
q:x:x^2 |
1億番目の素数の二乗を素因数分解しようとしたらエラーになったけど、それよりはるかに大きな数の素因巣分解ができることから、数の大きさや桁数が問題なのではなくて、含まれる素数の大きさが障害になっているだろうことが想像できます。ちなみに10^30xでは1秒ほど待ちました。
誰か他の言語でやってみてくれないかしら。