编程实现大整数的加减乘除
时间: 2023-08-23 17:10:34 浏览: 116
大整数的加减乘除是常见的数学运算,可以通过编程实现。下面是Python语言实现大整数加减乘除的示例代码:
1. 大整数加法:
```python
def add(num1, num2):
# 将两个字符串逆序后转换为列表
list1 = list(num1[::-1])
list2 = list(num2[::-1])
res = [] # 存储结果的列表
carry = 0 # 进位
while list1 or list2 or carry:
# 如果列表中还有元素或者有进位
n1 = int(list1.pop()) if list1 else 0
n2 = int(list2.pop()) if list2 else 0
# 相加并加上进位
carry, s = divmod(n1 + n2 + carry, 10)
res.append(str(s))
# 将结果列表逆序转换为字符串
return ''.join(res[::-1])
```
2. 大整数减法:
```python
def sub(num1, num2):
# 将两个字符串逆序后转换为列表
list1 = list(num1[::-1])
list2 = list(num2[::-1])
res = [] # 存储结果的列表
borrow = 0 # 借位
while list1:
# 如果列表中还有元素
n1 = int(list1.pop())
n2 = int(list2.pop()) if list2 else 0
# 减去借位并相减
n1 -= borrow
borrow = 0
if n1 < n2:
n1 += 10
borrow = 1
res.append(str(n1 - n2))
# 去掉结果前面的0
while res and res[-1] == '0':
res.pop()
# 如果结果为空,则表示两个数相等,返回0
return ''.join(res[::-1]) if res else '0'
```
3. 大整数乘法:
```python
def mul(num1, num2):
# 将两个字符串逆序后转换为列表
list1 = list(num1[::-1])
list2 = list(num2[::-1])
res = [0] * (len(list1) + len(list2)) # 存储结果的列表
for i in range(len(list1)):
for j in range(len(list2)):
# 计算乘积并加上当前位置的进位
res[i+j] += int(list1[i]) * int(list2[j])
# 处理进位
res[i+j+1] += res[i+j] // 10
res[i+j] %= 10
# 去掉结果前面的0
while res and res[-1] == 0:
res.pop()
# 将结果列表转换为字符串
return ''.join(map(str, res[::-1]))
```
4. 大整数除法:
```python
def div(num1, num2):
# 将两个字符串转换为整数
n1 = int(num1)
n2 = int(num2)
# 计算商和余数
q, r = divmod(n1, n2)
# 将结果转换为字符串并返回
return str(q), str(r)
```
需要注意的是,上述代码中只考虑了正整数的情况,对于负整数的处理需要额外考虑。
阅读全文