Python大数相加算法
时间: 2023-12-01 12:41:38 浏览: 115
Python中的整数类型是可以无限大的,因此可以直接进行大数相加。以下是一种简单的大数相加算法:
1. 将两个大数转换为字符串,并将它们逆序排列。
2. 从左到右依次取出两个数对应位置上的数字,将它们相加并加上进位。
3. 将相加结果对10取余,得到当前位置上的数字,并将进位保存下来。
4. 将两个数的下一位继续相加,直到所有位都处理完毕。
5. 将结果字符串逆序输出即为相加结果。
以下是Python代码实现:
```
def addStrings(num1: str, num2: str) -> str:
num1, num2 = num1[::-1], num2[::-1]
res = []
carry = 0
i, j = 0, 0
while i < len(num1) or j < len(num2):
n1 = int(num1[i]) if i < len(num1) else 0
n2 = int(num2[j]) if j < len(num2) else 0
tmp = n1 + n2 + carry
carry = tmp // 10
res.append(str(tmp % 10))
i += 1
j += 1
if carry:
res.append(str(carry))
return ''.join(res[::-1])
```
相关问题
用语言编程,实现两个大数相加
在编程中,特别是处理大整数时,我们通常会采用字符串或数组来模拟数值,因为大多数编程语言的内置数据类型对大整数的支持有限。例如,在Python中,可以创建字符串类型的数字,并使用特定算法来进行相加。以下是一个简单的Python示例:
```python
def add_large_numbers(num1_str, num2_str):
# 将输入的字符串转换成整数列表
num1_list = [int(char) for char in num1_str]
num2_list = [int(char) for char in num2_str]
# 初始化结果列表
result = []
carry = 0
# 从右向左逐位相加
for i in range(max(len(num1_list), len(num2_list))):
if i < len(num1_list):
carry += num1_list[-(i+1)]
if i < len(num2_list):
carry += num2_list[-(i+1)]
# 计算当前位的结果和进位
current_sum = carry % 10
carry //= 10
result.insert(0, current_sum)
# 如果还有进位,则追加到结果列表最前面
if carry > 0:
result.insert(0, carry)
# 返回结果字符串
return ''.join(map(str, result))
# 使用示例
num1 = "1234567890"
num2 = "9876543210"
result = add_large_numbers(num1, num2)
print(f"Result: {result}")
阅读全文