大数乘法python_大整数乘法python3实现

本文介绍了如何使用Python实现大整数乘法,通过字符串列表操作演示了如何利用位运算遵循乘法规律,同时对比了Python内置乘法的效率。通过示例展示了`multi`函数和Python内建运算结果的一致性。

因为python具有无限精度的int类型,所以用python实现大整数乘法是没意义的,可是思想是一样的。利用的规律是:第一个数的第i位和第二个数大第j位相乘,一定累加到结果的第i+j位上,这里是从0位置開始算的。代码例如以下:

import sys

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):

if result[i]>=10:

result[i+1]+=result[i]//10

result[i]=result[i]%10

return list2str(result[::-1])

if __name__=='__main__':

if len(sys.argv)!=3:

print('请输入两个參数')

exit()

a=sys.argv[1]

b=sys.argv[2]

res=multi(a,b)

print('multi',res)

print('ok',int(a)*int(b))

multi函数是大整数相乘的主函数,输入是字符串格式的两个大整数,输出是字符串格式的结果;list2str函数是把包括每一位数字的list转换成str,并把最高位占位用的0删除。输出结果例如以下:

multi后边跟的是用普通大整数思想计算的结果,ok后边跟的是python自己直接计算的相乘结果,用于对照结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值