大整數的乘法

2021-07-06 08:18:43 字數 1127 閱讀 4776

#include#include/* 乙個陣列元素表示4 個十進位制位,即陣列是萬進製的*/

#define bigint_radix 10000 //超過1萬進1,模擬10進製,一位就是乙個數字,超過10進1

#define radix_len 4 //每個元素表示4位

#define max_len (200/radix_len+1) /* 整數的最大位數,之所以要加1,是因為當遇到不能整除的時候,除法是向下取整的,必須多要一位才能儲存;當然,這裡兩個不超過200位的整數相乘,200剛好能被4整除,可以不需要加1*/

char a[max_len * radix_len], b[max_len * radix_len]; //採用字串形式輸入被乘數和乘數

int x[max_len], y[max_len], z[max_len * 2];//整數陣列形式表示的被乘數,乘數,積

/*** @brief 列印大整數.

* @param[in] x 大整數,用陣列表示,低位在低位址

* @param[in] n 陣列x 的長度

* @return 無

*/void bigint_print(const int x, const int n) else if (x[i] > 0)

} if(!start_output) printf("0"); /* 當x 全為0 時*/

}/**

* @brief 將輸入的字串轉化為大整數.

* @param[in] s 輸入的字串

* @param[out] x 大整數,用陣列表示,低位在低位址

* @return 無

*/void bigint_input(const char s, int x)

x[j++] = temp; }}

/*** @brief 大整數乘法.

* @param[in] x x

* @param[in] y y

* @param[out] z z=x*y

* @return 無

*/void bigint_mul(const int x, const int y, int z)

} }}int main()

例子如下圖:

大整數乘法

參考 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...