Вам нужно будет найти более эффективный метод возведения в степень, чем простое повторное умножение. Вы просите свой компьютер выполнить 27 квинтиллионных умножений! Даже если мы предположительно предположим, что вы можете выполнять миллиард таких операций в секунду, вам потребуется 900 лет, чтобы завершить этот расчет.
Но давайте предположим, что вы готовы долго ждать. Вам также придется выполнить несколько обновлений памяти на вашем компьютере: результирующее число займет примерно столько же места на вашем компьютере, как и весь объем хранилища в Интернете (по состоянию на 2016 год в любом случае: когда вы, наконец, закончите умножение , в 2900 году они, вероятно, будут иметь указатели большого пальца этого размера).
Если это не проблема для вас тоже, то вам просто придется написать версию repeat
, которая использует bigints для подсчета повторений вместо длинной:
(defn repeat' [n x]
(lazy-seq
(when (> n 0N)
(cons x (repeat' (dec' n) x)))))
Что именно вы пытаетесь достичь? Вы хотите сделать модульное возведение в степень случайно? –