10000以内のすべての水仙の数を印刷します——python

1268 ワード

水仙の花の数:1つの3桁の数で、その各位の数字の立方とこの数自体に等しい.例えば153は水仙の花の数である、153=pow(1,3)+pow(5,3)+pow(3,3)である.教材に出ているこの問題は厳密に言えば厳密ではなく、3人のものは水仙花数と呼ばれている.テーマの意味ではすべて、そんなに厳しくはありません.百科事典の詳細は、言うまでもありません.宿題の問題を実現するためだけに、あまり考えていないので、時間の複雑さが高い子供靴を嫌って自分で修正してください.
全体的な考え方.
  • 数字を文字に変換することで、各文字によるべき乗演算が容易になる
  • .
  • 出力結果
  • def my_sum(a):
       n = len(a)
       result = sum(map(lambda x: pow(int(x), n), a))
       return result 
       
    def main():
       for i in range(1, 10001):
          a = str(i)
          if my_sum(a) == int(a):
             yield a
                
    if __name__ == "__main__":
        print(list(main()))
    

    結果は次のとおりです.
    ['1', '2', '3', '4', '5', '6', '7', '8', '9', '153', '370', '371', '407', '1634', '8208', '9474']
    
    

    注意:理解の難点はジェネレータ関数にある可能性がありますか?文献を探して考えればいいし、教材の多くもとても上手です.4.水仙の数の概念を普及させることに注意します:水仙の数(Narcissistic number)も超完全な数字の不変量(pluperfect digital invariant,PPDI)、ナルシスト数、べき乗数、アムス壮数あるいはアムストロング数(Armstrong number)と呼ばれて、水仙の花の数は1つの3桁の数を指して、その各ビットの数字の3乗の和は、それ自体に等しい(例えば、1^3+5^3+3^3=153).5.一位自べき乗数:独身数二位自べき乗数:三位自べき乗数なし:水仙花数四位自べき乗数:四葉バラ数五位自べき乗数:五角星数六位自べき乗数:六合数七位自べき乗数:北斗七星数八位自べき乗数:八仙数九位自べき乗数:九九重陽数十位自数:十全十美数