Как напрограммировать классическое школьное умножение столбиком в python?
требуется только алгоритм, чтобы python считал по нему
Источник: Stack Overflow на русском
требуется только алгоритм, чтобы python считал по нему
def multiply(num1, num2):
# конвертируем числа в строки, чтобы легче работать с каждой цифрой
str_num1 = str(num1)
str_num2 = str(num2)
# создаем массив для хранения промежуточных результатов
results = [0] * (len(str_num1) + len(str_num2))
# переворачиваем строки для удобства
str_num1 = str_num1[::-1]
str_num2 = str_num2[::-1]
# вычисляем произведение
for i in range(len(str_num1)):
for j in range(len(str_num2)):
results[i + j] += int(str_num1[i]) * int(str_num2[j])
# обработка переносов
carry = 0
for i in range(len(results)):
results[i] += carry
carry = results[i] // 10
results[i] %= 10
# удаляем ведущие нули
while len(results) > 1 and results[-1] == 0:
results.pop()
# переворачиваем результат обратно и конвертируем в число
return int(''.join(map(str, results[::-1])))
# тест
print(multiply(5, 5))