Вы можете посчитать количество цифр с помощью этой функции:
(defn dec-digit-count [n]
(inc (if (zero? n) 0
(long (Math/floor (Math/log10 n))))))
Теперь мы знаем, сколько там цифр, и мы хотим оставить только первые 9. Что нам нужно, это разделить число на 10^ (цифры-9) или в Clojure:
(defn first-digits [number digits]
(unchecked-divide number (int (Math/pow 10 digits))))
И назовите это как: (first-digits your-number 9)
и я думаю, что это в постоянном времени.Я только не уверен насчет реализации log10
.Но это намного быстрее, чем решение по модулю / петле.
Кроме того, есть еще более простое решение.Вы можете просто скопировать и вставить первые 9 цифр из номера.