GameSprit

自転車やMac・AppleScript、映画・小説やドラマのレビュー、備忘メモ・クイズなどを置いています。

AppleScript : 多倍長計算をしてみる

2013-02-02 13:31:28 | AppleScript

AppleScript を使った多倍長計算



AppleScript を使って、多倍長計算をしてみます。


とは言っても、Applescript で多倍長計算のスクリプトを組むのはできないことはないけれど大変なので、Mac に秘められた ruby に頼ります。
世の中で言う、リソースの有機的活用です。

つまり、すでにあるものを使います。




AppleScript を使った多倍長計算のスクリプト


完成したスクリプトは次の通りです。

AppleScript を使った多倍長計算のスクリプト




ここでは、12345678901234567890 * 12345678901234567890 を計算してみました。
ちなみに、iPhone4S の計算機アプリで、同じ計算をすると次の通りです。

iPhone4S の計算機アプリでの計算結果




iPhone4S の計算機アプリは16ケタまでしか表示してくれません。


さて、もう少しやってみましょうか。

AppleScript を使った多倍長計算のスクリプト




10×12ケタ、つまり120桁の計算を軽々とこなしてくれました。



AppleScript を使った多倍長計算のスクリプトのしくみ


AppleScript を使った多倍長計算のスクリプトのしくみですが、
次の機能を活用しています。


  1. AppleScript からdo shell script コマンドを使って、ruby のスクリプトを実行する。

  2. このとき、計算式は変数 cmd に文字列としていったん格納し、do shell script コマンドで展開する。

  3. p(計算式) という、ruby スクリプトを実行する。


使い回しできるように、AppleScript のサブルーチンとしてまとめています。

ここで、 * は乗算の記号、 ** は累乗の記号です。
例えば、 「2*2」は「2 × 2」、「2**2」は「2の2乗」です。



AppleScript を使った多倍長計算の応用


ここでは、調子に乗ってメルセンヌ素数を計算してみます。

メルセンヌ素数とは、2n - 1(n は自然数)の形の自然数であるメルセンヌ数(Mersenne number)のうち、素数である数のことです。


9番目のメルセンヌ素数、n=61 を試してみます。

つまり、2**61 - 1を計算します。

9番目のメルセンヌ素数




答えは、2305843009213693951
この辺りまではべき乗計算ができます。




他に、面白そうな計算を試してみましょう。
1111... と1が連続数の2乗を計算すると面白いのです。

1111111 ** 2 を計算してみましたら、答えは、1234567654321
111111111111111 ** 2 は、12345679012345654320987654321







キーワード:AppleScript多倍長計算メルセンヌ素数

最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。