python大数相乘

python大数相乘,时间复杂度O(n^2)
1、把数据扔到list里然后逆转,list顺序0~n对应个位、十位...
2、创建存储结果list,长度默认为两个被乘数长度之和
3、按位相乘,相同竖线位置累加
4、结果list从0位开始遍历,如果大于9进位
5、结果逆序
def mul(n1,n2):
    n1.reverse()
    n2.reverse()
    n3=[]
    print n1,n2
    for i0 in xrange(len(n1)+len(n2)):
        n3.append(0)
    for i1 in xrange(len(n1)):
        for i2 in xrange(len(n2)):
            n3[i1+i2] += n1[i1]*n2[i2]
    for i3 in xrange(len(n3)):
        if(n3[i3]>9):
            n3[i3+1] += n3[i3]/10
            n3[i3] = n3[i3]%10
    n3.reverse()
    return n3
print mul([2,4,5,6,6],[4,5,2,0,5,3])
#[2,4,5,6,6]*[4,5,2,0,5,3]=[1, 1, 1, 0, 5, 1, 3, 3, 9, 9, 8]

猜你喜欢

转载自blog.csdn.net/acttell/article/details/80038274
今日推荐