python实现高精度乘法

2023-01-31 03:01:14 python 乘法

方法是将两个乘数转为两个包含乘数每位数字的list,
因为在计算中两个list中的数据要反复使用,所以定义第三个list来保存乘法的运算结果,然后使用两重循序模拟列竖式计算出乘法运算的结果, 因为乘法运算每次运算时需要向前移动一位表示扩大10倍,所以定义变量pos标记计算时移动的位数, 每次移动一位

from functools import reduce
def multiply(a, b):
    a = list(map(lambda x : int(x), a.strip()))
    b = list(map(lambda x : int(x), b.strip()))
    c = list(map(lambda x : 0, ("0" + str(a) + str(b)).strip()))
    index = len(c) - 1;
    for i in range(len(a) - 1, -1, -1):
        pos = 0
        for j in range(len(b) - 1, -1, -1):
            temp = a[i] * b[j] + c[index - pos] #两个乘数相乘,并加上在此前一次的进位
            c[index - pos] = temp % 10 #保存运算求余结果
            c[index - pos - 1] += temp // 10 #处理进位,进位可以是0或者大于0的数
            pos += 1
        index -= 1
    return int(reduce(lambda x, y : str(x) + str(y), c)) #将list中的内容转换为字符串

a = input("input a: ")
b = input("input b: ")
print(multiply(a, b))

相关文章