2つの大きな乗算python(ローカル関数と組み込みメソッドを呼び出さない)

752 ワード

def multi(a,b):
    lena=len(a)
    lenb=len(b)
    aa=list(a)
    bb=list(b)
    result=[]
    print(aa,bb)
    for i in range(len(a)+len(b)):
        result.append('0')
    print(result)
    for i in range(len(a)):
        for j in range(len(b)):
            loca=len(a)+len(b)-i-j-1
            aa[i]=int(aa[i])
            bb[j]=int(bb[j])
            result[loca]=aa[i]*bb[j]
    for i in range(len(result)-1):
        result[i+1]+=int(result[i])//10
        result[i]=int(result[i])%10
    end=''
    for i in range(len(result)):
        end+=str(result[len(result)-i-1])
    return end
a='100'
b='300'
print(multi(a,b))

乗算規則によれば、i位とj位が乗算されると、結果のi+j-1およびi+j位に、i位およびj位の成績結果10位がi+j位になる