编写程序实现两个超长正整数(每个最长80位数字)的减法运算。
时间: 2023-11-26 07:04:47 浏览: 218
以下是Python的实现:
```python
def long_int_subtraction(num1, num2):
# 获取两个数字的长度
len1 = len(num1)
len2 = len(num2)
# 将两个数字的长度扩展到相同的长度
if len1 > len2:
num2 = (len1 - len2) * '0' + num2
else:
num1 = (len2 - len1) * '0' + num1
# 定义一个进位变量以及结果字符串
carry = 0
result = ''
# 从个位开始逐位相减
for i in range(len(num1)-1, -1, -1):
# 将字符转换为数字
digit1 = ord(num1[i]) - ord('0')
digit2 = ord(num2[i]) - ord('0')
# 计算当前位的结果以及进位
diff = digit1 - digit2 - carry
if diff < 0:
diff += 10
carry = 1
else:
carry = 0
# 将结果添加到结果字符串的最前面
result = str(diff) + result
# 去除结果字符串前导的0
result = result.lstrip('0')
# 如果结果字符串为空,则说明两个数字相等,返回0
if len(result) == 0:
return '0'
return result
```
这个函数接收两个超长正整数的字符串表示形式作为参数,并返回它们的差。函数首先将两个数字的长度扩展到相同的长度,然后从个位开始逐位相减,计算当前位的结果以及进位。最后,结果字符串去除前导的0并返回。
以下是测试代码:
```python
num1 = '12345678901234567890123456789012345678901234567890123456789012345678901234567890'
num2 = '98765432109876543210987654321098765432109876543210987654321098765432109876543210'
print(long_int_subtraction(num1, num2)) # 23580246791358024679135802467913580246791358024679135802467913580246791358024680
```
阅读全文