填空题
【说明】 找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的x,使得:x=a*a*a+b*b*b+c*C*c+d*d*d+e*e*e+f*f*f,其中,a、b、c、d、e、f者是是自然数,a≤b≤C≤d≤e≤f; [a,b,c]!=[d,e,f) 【C++程序】 #include<stdio.h> #define N 100 void main ()
int i,j,il,ih,i0,j0,k0,il,j 1,k1; int j1[N],jh[N];/*第i层平面的行的变化范围,自jl[i]至jh[i]*/ int k[N][N];/*第i层平面中,对应行j,当前的列号值为k[i][j]*/ int p[N], min;/*p[i]=i*i*i*/ i1=1;j1=1;k1=1;/*首先只局限下三角棱体的顶点*/ i1=1;ih=1;/*预置i的变化范围初值i1<=i<=ih*/ j1[1]=1;jh[1]=1;/*对应i层平面的行的变化范围*/ k[i1][j1[i1>=1;/*第i层平面中,对应行的列的初值*/ p[1]=1; do
min=p[i1]+p[j1]+p[k1]; i0=i1;j0=j1;k0=k1; if ( i1==ih ) /*当前候选者在ih平面, 则ih增1*/
i1=i1;/*预定最上平面的最小行的当前列为下一个候选者*/ j1=j1[i1]; k1=k[i1][j1]; for ( i=i1;i<=ih;i++ ) /*寻找最小值所在平面号、行号和列号*/
for ( j=j1[i];j<=jh[i];j++ ) if ( p[i]+p[j]+p[k[i][j>< (4) )
i1=i;j 1=j;k1=k[i][j];
while ( p[i1]+p[j1]+p[k1]!=min&& (5) ); if ( p[i1]+p[j1]+p[k1]==min ) printf ( "%4d=%2d^3+%d^3+%dA3=%2d^3+%d^3+%d^3/n",min,i0,j0,k0,i1,j1,k1 ); else printf ( "The %d is too small./n",N );