由於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.ar**)!=3:
print('請輸入兩個引數')
exit()
a=sys.ar**[1]
b=sys.ar**[2]
res=multi(a,b)
print('multi',res)
print('ok',int(a)*int(b))
multi函式是大整數相乘的主函式,輸入是字串格式的兩個大整數,輸出是字串格式的結果;list2str函式是把包含每一位數字的list轉換成str,並把最高位佔位用的0刪除。輸出結果如下:
multi後邊跟的是用普通大整數思想計算的結果,ok後邊跟的是python自己直接計算的相乘結果,用於對比結果。
大整數乘法
參考 http hi.baidu.com operationsystem blog item 6e45dd1af1acadf3ae51330b.html 在計算機中,長整型 long int 變數的範圍是 2147483648 至 2147483647,因此若用長整型變數做乘法運算,乘積最多不能超過...
大整數乘法
問題描述 by 計算機演算法設計與分析 王曉東 p17 通常,在分析乙個演算法的計算複雜性時,都將加法和乘法運算當作是基本運算來處理,即將執行一次加法或乘法運算所需的計算時間當作乙個僅取決於計算機硬體處理速度的常數。這個假定僅在計算機硬體能對參加運算的整數直接表示和處理時才是合理的。然而,在某些情況...
大整數乘法。
include using namespace std int multi int num1,int size1,int num2,int size2 int size size1 size2 int ret new int size int i 0 for i 0 iret i 0 for i 0...