a を整数、n を自然数とします。
一般に a^n の計算を高速に行う方法を教えてください。

なお、この質問は
「特定の n に対して最小の計算回数を求める」
という趣旨の質問ではありません。

(追記)
バイナリ法によるコード(Ruby版およびPython版)を
回答に載せました。