1. 程式人生 > >python實現高精度乘法

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))