模拟竖式的大数相乘---Python实现

def big_data_multiply(num_1,num_2):
    #print num_1*num_2
    num_1_list = [int(i) for i in str(num_1)] # 相当于竖式的下一层
    num_2_list = [int(i) for i in str(num_2)] # 相当于竖式的上一层
    result = [0]*len(num_2_list)
    i = len(num_1_list)-1
    while i>=0:
        add = 0  # 乘法竖式的进位
        j = len(num_2_list) - 1
        while j>=0:
            k = (num_1_list[i]*num_2_list[j]+add)%10
            add = (result[j]+num_1_list[i]*num_2_list[j]+add)/10
            result[j]=(result[j]+k)%10
            j-=1
        result.insert(0,add)
        i-=1
    if result[0]==0:
        return result[1:]
    else:
        return result

print big_data_multiply(22323382109830928302832921083290138209382323,121362187937293729372983721932123434343433)

猜你喜欢

转载自blog.csdn.net/qq_38322240/article/details/83211102