AppleScript を使った多倍長計算
AppleScript を使って、多倍長計算をしてみます。
とは言っても、Applescript で多倍長計算のスクリプトを組むのはできないことはないけれど大変なので、Mac に秘められた ruby に頼ります。
世の中で言う、リソースの有機的活用です。
つまり、すでにあるものを使います。
AppleScript を使った多倍長計算のスクリプト
完成したスクリプトは次の通りです。
ここでは、12345678901234567890 * 12345678901234567890 を計算してみました。
ちなみに、iPhone4S の計算機アプリで、同じ計算をすると次の通りです。
iPhone4S の計算機アプリは16ケタまでしか表示してくれません。
さて、もう少しやってみましょうか。
10×12ケタ、つまり120桁の計算を軽々とこなしてくれました。
AppleScript を使った多倍長計算のスクリプトのしくみ
AppleScript を使った多倍長計算のスクリプトのしくみですが、
次の機能を活用しています。
- AppleScript からdo shell script コマンドを使って、ruby のスクリプトを実行する。
- このとき、計算式は変数 cmd に文字列としていったん格納し、do shell script コマンドで展開する。
- p(計算式) という、ruby スクリプトを実行する。
使い回しできるように、AppleScript のサブルーチンとしてまとめています。
ここで、 * は乗算の記号、 ** は累乗の記号です。
例えば、 「2*2」は「2 × 2」、「2**2」は「2の2乗」です。
AppleScript を使った多倍長計算の応用
ここでは、調子に乗ってメルセンヌ素数を計算してみます。
メルセンヌ素数とは、2n - 1(n は自然数)の形の自然数であるメルセンヌ数(Mersenne number)のうち、素数である数のことです。
9番目のメルセンヌ素数、n=61 を試してみます。
つまり、2**61 - 1を計算します。
答えは、2305843009213693951
この辺りまではべき乗計算ができます。
他に、面白そうな計算を試してみましょう。
1111... と1が連続数の2乗を計算すると面白いのです。
1111111 ** 2 を計算してみましたら、答えは、1234567654321
111111111111111 ** 2 は、12345679012345654320987654321
キーワード:AppleScript、多倍長計算、メルセンヌ素数