Преобразование из целого числа Python в строку имеет пробег O (n ^ 2), где n - длина числа.Для достаточно больших чисел это будет медленно.Для числа из 1 000 001 цифр str () занимает примерно 24 секунды на моем компьютере.
Если вам действительно нужно преобразовать очень большие числа в строку, ваш рекурсивный алгоритм является хорошим подходом.
Должна работать следующая версия вашего рекурсивного кода:
def p(x,n=0):
if n == 0:
n = int(x.bit_length() * 0.3)
if n < 100:
return str(x)
n >>= 1
l = 10**n
a,b = divmod(x, l)
upper = p(a,n)
lower = p(b,n).rjust(n, "0")
return upper + lower
Автоматически оценивает количество цифр в выходных данных.Это примерно в 4 раза быстрее для числа из 1 000 001 цифр.
Если вам нужно быстрее, вам, вероятно, потребуется использовать внешнюю библиотеку.