[Home]-[2002.11.02]-[解答]

パズルの解答

 各桁の数字を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);
		}
	   }
}


[Home]-[2002.11.02]-[解答]
mailto:hhase@po10.lcv.ne.jp
2001-2002 hhase