c語言大數相乘

2021-09-22 10:09:02 字數 763 閱讀 3014

大數相乘的方法很多,在這裡我就介紹乙個理解和寫起來比較方便的

思想和大數相加差不多!!!

為什麼大數相乘相較於大數相加比較難呢?(以 n × m 位的數為例)

假設兩個大數的字元陣列分別為 s1, s2 ,答案陣列為 a

遍歷是比較簡單的,主要是進製的問題,我們可以先不考慮進製,將 s1 的第 i 位與 s2 的第 j 位相乘的數放在 a 陣列的第 i + j - 1位

void

bignummul

(char

* s1,

char

* s2)

;int i =

strlen

(s1)-1

, j =

strlen

(s2)-1

;// 從後往前處理

while

(i >=0)

i--; j =

strlen

(s2)-1

;}int n =

strlen

(s1)

+strlen

(s2)

, temp =0;

// 處理運算完成的陣列

for(i = n; i >2;

--i)

a[2]+

= temp;

// a[2] 為第乙個數,不需要處理

for(i =

2; i <= n;

++i)

}

寫起來比較方便的

大數相乘(C語言,分治演算法)

問題 由於程式語言提供的基本數值資料型別表示的數值範圍有限,不能滿足較大規模的高精度數值計算,因此需要利用其他方法實現高精度數值的計算,於是產生了大數運算。大數運算主要有加 減 乘三種方法。下面就是用分治演算法解決 大數相乘 問題。分治演算法解題的一般步驟 include using namespa...

c 大數相乘

using system using system.collections.generic using system.text namespace numbers if ch1.length 0 return true return true public static string getmuti...

C 大數相乘

2018.7.14修改,在之前除錯時出現錯誤,現已更正。總結一下前段時間寫的大數模板 原理就是用string型代替int double什麼的或者 unsigned long long int 然後逐個分析字元,用對應字元所表示的數字相乘來重新寫乘法。首先是宣告兩個字元a maxn 5 b maxn ...