pythonは1000以内のアームストロング数を探しています
8461 ワード
文書ディレクトリ方法1:ビット数を算出しforサイクル 方法2:whileサイクル+判定ビット数 アームストロング数の定義:1つのnビットの正の整数がその各数字のn次方の和に等しい場合、この数をアームストロング数と呼ぶ.たとえば1^3+5^3+3^3=153です.
1000以内のアームストロング数:1,2,3,4,5,6,7,8,9,153,370,371,407.
方法1:ビット数を算出してforサイクルを用いる
コアコードは
完全なコードは次のとおりです.
実行効果:
方法2:whileサイクル+判定ビット数
コアコード:
完全なコードは次のとおりです.
まとめ:whileサイクルはビット数が不確定な場合に有効であり、forサイクルはサイクル回数などのより多くの情報を事前に計算する必要がある.一方whileは不要であり,脱退条件を作成し,計算しながら判断することができる.
1000以内のアームストロング数:1,2,3,4,5,6,7,8,9,153,370,371,407.
方法1:ビット数を算出してforサイクルを用いる
コアコードは
length = len(str(num)) # num , int
for ii in range(length): # length
num_str = str(num)
sum_armstrong += int(num_str[ii])**length # num_str[]
if sum_armstrong == num:
return True
完全なコードは次のとおりです.
def is_armstrong(num):
length = len(str(num))
sum_armstrong = 0
for ii in range(length):
sum_armstrong += int(str(num)[ii])**length
if sum_armstrong == num:
return True
else:
return False
for num in range(1,1000):
if is_armstrong(num):
print(num, end = ' ')
実行効果:
1 2 3 4 5 6 7 8 9 153 370 371 407
Process finished with exit code 0
方法2:whileサイクル+判定ビット数
コアコード:
temp = num #
while temp > 0:
sum_armstrong += (temp%10)**length #
temp //= 10 # 10, ,
if sum_armstrong == num:
return True
完全なコードは次のとおりです.
def is_armstrong(num):
temp = num
sum_armstrong = 0
length = len(str(num))
while temp > 0:
sum_armstrong += (temp%10)**length #
temp //= 10
if sum_armstrong == num:
return True
else:
return False
for num in range(1,1000):
if is_armstrong(num):
print(num, end = ' ')
まとめ:whileサイクルはビット数が不確定な場合に有効であり、forサイクルはサイクル回数などのより多くの情報を事前に計算する必要がある.一方whileは不要であり,脱退条件を作成し,計算しながら判断することができる.