Python長整數運算
- 正整數運算
- 正整數相加-對位相加
- 正整數相減-對位相減
正整數運算
這次,我們加法采用對位相加,也就是兩個長整數對應位上的數字相加,之后再計算進位,最后得出結果的方法,
正整數相加-對位相加
| 例如 | 數字 |
|---|---|
| 加數 | 1111 |
| 被加數 | 99999 |
先將數字串分割為獨立的數字,再對位相加,
| ··· | 十萬 | 萬位 | 千位 | 百位 | 十位 | 個位 |
|---|---|---|---|---|---|---|
| 加數 | 0 | 0 | 1 | 1 | 1 | 1 |
| + | + | + | + | + | + | + |
| 被加數 | 0 | 9 | 9 | 9 | 9 | 9 |
| 結果 | 0 | 9 | 10 | 10 | 10 | 10 |
之后是處理進位,
| ··· | 十萬 | 萬位 | 千位 | 百位 | 十位 | 個位 |
|---|---|---|---|---|---|---|
| 個位進位 | 0 | 9 | 10 | 10 | 10+1 | ←0 |
| 十位進位 | 0 | 9 | 10 | 10+1 | ←1 | 0 |
| 百位進位 | 0 | 9 | 10+1 | ←1 | 1 | 0 |
| 千位進位 | 0 | 10 | ←1 | 1 | 1 | 0 |
| 萬位進位 | 0+1 | ←0 | 1 | 1 | 1 | 0 |
| 最終結果 | 1 | 0 | 1 | 1 | 1 | 0 |
上代碼:
#大正整數相加
def SUM():
# 分割數字字串
num1 = list(input())
num2 = list(input())
# 分割字串從右對齊逐個相加存入temp
len1 = len(num1)
len2 = len(num2)
count = max(len1, len2)
index = 0
temp = [0 for i in range(count+1)]
if len1 > len2: # 哪個數更長的操作
index = len2-1
else:
index = len1-1
for i in range(count, 0, -1):
if len1 > len2:
if index >= 0:
temp[i] += int(num2[index])
index -= 1
temp[i] += int(num1[i-1])
else:
if index >= 0:
temp[i] += int(num1[index])
index -= 1
temp[i] += int(num2[i-1])
# 判斷是否有進位
for i in range(count, -1, -1):
if temp[i] > 9:
temp[i] = temp[i] % 10
temp[i-1] += 1
temp[i] = str(temp[i])
#無進位,刪掉抬頭0
if temp[0] == '0':
temp.pop(0)
count -= 1
# 大整數連接起來
sum = ''
for i in range(count+1):
sum += temp[i]
print(sum)
加數和被加數倒過來也一樣,但是涉及到誰的位數更大一些,代碼上需要判斷一下,因為代碼中保存對位相加結果的變數temp[]的長度是按最長的整數的長度而定的(多一位,因為可能會進位),
正整數相減-對位相減
整數相減不同于相加,被減數和減數不能顛倒位置,但是我們仍可以使用對位相減的方法,只是需要限制,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/170651.html
標籤:python
上一篇:Canvas圓形時鐘
