パズルの解答
各桁の数字を3乗して足したら元の数に戻るという数字を挙げよ、という問題の解答です。0とか1のような自明なものは除くと、答は 153, 370, 371, 407 の4つです。
面倒なのでC言語でプログラムを書いて実行してみました。ソースコードを載せておきます。(というほどのものではないですけれども) このソースでは4重ループで0から9999まで調べているのですが、5桁以上も調べる必要はあるでしょうか?
#include <stdio.h> main() { int x3table[10]; int i,j,k,m; int sum1, sum2; for ( i=0 ; i < 10 ; i++ ) { x3table[i] = i*i*i; } for ( i=0 ; i < 10 ; i++ ) for ( j=0 ; j < 10 ; j++ ) for ( k=0 ; k < 10 ; k++ ) for ( m=0 ; m < 10 ; m++ ) { sum1 = (((i*10)+j)*10+k)*10+m; sum2 = x3table[i]+x3table[j]+x3table[k]+x3table[m]; if ( sum1 == sum2 ) { printf(" %4d\n",sum1); } } }