python大数相乘: python大数相乘,时间复杂度O(n^2) 1、把数据扔到list里然后逆转,list顺序0~n对应个位、十位... 2、创建存储结果list,长度默认为两个被乘数长度之和 3、按位相乘,相同竖线位置累加 4、结果list从0位开始遍历,如果大于9进位 5、结果逆序
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time : 2019/2/15 21:57
#@File : multiply_test.py
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])
[6, 6, 5, 4, 2] [3, 5, 0, 2, 5, 4] [1, 1, 1, 0, 5, 1, 3, 3, 9, 9, 8]
Process finished with exit code 0