zoukankan      html  css  js  c++  java
  • 大整数乘法python3实现

            因为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自己直接计算的相乘结果,用于对照结果。


    转载请注明:转自http://blog.csdn.net/littlethunder/article/details/25215517

  • 相关阅读:
    大爆炸集成 Big Bang
    How:怎么做集成测试
    Where:对什么部分做集成测试
    web预览图片
    对象的属性赋值
    Web请求
    Sql Server 获取数据库最近执行的操作
    服务安装脚本
    生成并保存二维码图片,此方法最清晰
    c# get,set设置默认值
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4282077.html
Copyright © 2011-2022 走看看