問題描述:將形如1234567890123456789不能儲存在long變數中的數稱為超長整數或大整數。現討論大整數的加減乘除運算。
思想方法:用陣列儲存超長整數,且為處理的簡單起見約定每個元素存放相同位的數字。如:每個元素存放4位。
1、加法運算
2、減法運算void
add(
int*a,
int*b,
int*c)
}
3、乘法運算void
sub(
int*a,
int*b,
int*c)
}}
3.1 大整數與整數
3.2 大整數與大整數void
mul(
int*a,
int b,
int*c)
}

3、除法運算void
mul2
(int
*a,int
*b,int
*c)//初始化陣列,清零,n是陣列的長度
for(
int i=n-
1;i>=n/
2;i--
) c[idc]
+=carry;
}}
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
(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)
(c,n)
;//1112,3111,1111,1111-6711,1111,9111,1111=-5598,8000,8000,0000
sub(a,b,c);if
(borrow==0)
//如果最高位有借位
(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)
(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)
(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數,這邊翻為超長整數 避免與資料型態的長整數翻譯混淆 或,俗稱大數運算。解法 ...