大整数乘法python3实现

本文介绍了如何在Python中利用大整数乘法规则实现两个大整数的乘法操作,虽然Python内置了无限精度的int类型,但理解这种算法的思想依然有价值。通过将每个数的第i位与另一个数的第j位相乘并累加到结果的第i+j位,可以完成大整数的乘法。代码实现后的结果与Python内置乘法进行了对比。
摘要由CSDN通过智能技术生成

        由于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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值