超長整數運算(大整數運算)

2021-10-03 23:36:16 字數 2842 閱讀 6905

問題描述:將形如1234567890123456789不能儲存在long變數中的數稱為超長整數或大整數。現討論大整數的加減乘除運算。

思想方法:用陣列儲存超長整數,且為處理的簡單起見約定每個元素存放相同位的數字。如:每個元素存放4位。

1、加法運算

void

add(

int*a,

int*b,

int*c)

}

2、減法運算

void

sub(

int*a,

int*b,

int*c)

}}

3、乘法運算

3.1 大整數與整數

void

mul(

int*a,

int b,

int*c)

}

3.2 大整數與大整數

void

mul2

(int

*a,int

*b,int

*c)//初始化陣列,清零,n是陣列的長度

for(

int i=n-

1;i>=n/

2;i--

) c[idc]

+=carry;

}}

3、除法運算

void

div(

int*a,

int b,

int*c)

}

void

div2

(int

*a,int b,

int*c)

}

下附程式的完整**:

#include

const

int n=4;

//陣列的長度

//加法

static

int carry=0;

void

add(

int*a,

int*b,

int*c)

}//減法

int borrow=0;

void

sub(

int*a,

int*b,

int*c)}}

//乘法(大整數與整數)

void

mul(

int*a,

int b,

int*c)

}//乘法2(大整數與大整數)

void

mul2

(int

*a,int

*b,int

*c)for

(int i=n-

1;i>=n/

2;i--

) c[idc]

+=carry;}}

//除法

int remain=0;

void

div(

int*a,

int b,

int*c)

}//除法2

void

div2

(int

*a,int b,

int*c)

}void

print

(int

*c,int k)

void

print2

(int

*c,int k)

intmain()

,b[n]

=,c[n]

;for

(i=0

;i)//1112,3111,1111,1111+6711,1111,9111,1111=7823,4223,0222,2222

add(a,b,c);if

(carry==1)

//如果最高位有進製

printf

("%d"

,carry)

;print

(c,n)

;//1112,3111,1111,1111-6711,1111,9111,1111=-5598,8000,8000,0000

sub(a,b,c);if

(borrow==0)

//如果最高位有借位

print

(c,n)

;else

//1112,3111,1111,1111*11=1,2235,4222,2222,2221

for(i=

0;i)mul

(a,d,c);if

(carry!=0)

printf

("%d"

,carry)

;print

(c,n)

;//

mul2

(a,b,c)

;print2

(c,n)

;//1112,3111,1111,1111÷11 = 101,1191,9191,9191

for(i=

0;i)div

(a,d,c)

;print

(c,n)

;// 1112,3111,1111,1111÷11 = 101,1191,9191,9191

for(i=

0;i)div2

(a,d,c)

;print2

(c,n)

;return0;

}

超長整數運算(大數運算)

說明基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表達的最大整數受到限制,例如123456789123456789這樣的整數就不可能儲存在long變數中 例如c c 等 我們稱這為long數,或俗稱大數運算。解法乙個變數無法表示超長整數,則就使用多個變數,當然這使用陣列最...

超長整數運算(大數運算)

說明 基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表 達的最大整數受到限制,例如123456789123456789這樣的 整數就不可能儲存在long變數中 例 如c c 等 我們稱這為long數,這邊翻為超長整數 避免與資料型態的長整數翻譯混淆 或 俗稱大數運算。解法...

7 超長整數運算(大數運算)

說明 基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表達的最大整數受到限制,例如123456789123456789這樣的 整數就不可能儲存在long變數中 例 如c c 等 我們稱這為long數,這邊翻為超長整數 避免與資料型態的長整數翻譯混淆 或,俗稱大數運算。解法 ...