1. 程式人生 > >【Python】大數相乘

【Python】大數相乘

思路:

1. 把資料放到列表中,即list1和list2。

2. 每個list1列表中的第i個元素,與list2列表中的第j個元素相乘,把對應乘積的結果放到下標為(i+j)的列表中。

3. 如果該位的結果大於10,則向後進1。 

def list2str(li):
    while li[0] == 0:
        del li[0]
    res = ''
    for i in li:
        res += str(i)
    return res

def multi(stra, strb):
    aa = list(stra)
    bb = list(strb)
    lena = len(stra)
    lenb = len(strb)
    result = [0 for i in range(lena + lenb)]
    for i in range(lena):
        for j in range(lenb):
            result[lena - i - 1 + lenb - j - 1] += int(aa[i]) * int(bb[j])
    for i in range(len(result) - 1):
        while result[i] >= 10:
            result[i + 1] += result[i] // 10
            result[i] = result[i] % 10
    return list2str(result[::-1])

if __name__ == '__main__':
    print('請輸入兩個引數')
    str1 = input()
    str2 = input()
    if str1.isdigit() and str2.isdigit():
        res = multi(str1, str2)
        print('multi', res)
        #print('ok', int(res) - int(str1) * int(str2))