【Python】大數相乘
阿新 • • 發佈:2018-12-10
思路:
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))