ナルシシスト数

各桁の数字を桁数で累乗した数の和がもとの数になる数がナルシシスト数
言葉だとややこしいけど、例えばナルシシスト数の153。

1の3乗+5の3乗+3の3乗=153

Pythonでプログラミング。
3桁のナルシシスト数を出力するプログラムはこんな感じ

import itertools
list = [0,1,2,3,4,5,6,7,8,9]
n=3               #桁数を決める
p = itertools.product(list, repeat=n) #3つの数字の重複あり順列のリスト
for v in p:
 (a,b,c)=v
 k = 100*a + 10*b + c     #3桁の数を作る
 m = a**n + b**n + c**n    #各桁の3乗の和
 if k > 10**(n-1):       #3桁の数字について
  if k == m:
    #等しければ書き出し
    print(k)

計算結果
3桁の数(153、370、371、407)
4桁の数(1634、8208、9474)
5桁の数(54748、92727、93084)
6桁の数(548834)
7桁の数(1741725、4210818、9800817、9926315)
8桁の数(24678050、24678051、88593477)
これ以上は計算が10分以上かかりそうなのでやめておきます。

全部で88個のナルシシスト数があり、最大は39桁だそうです。


プログラミング練習部屋へ