2.3.3 综合求3~6位自幂数
采用方法1)设直的求3~6位自方幂数的程序:
#include<math.h>
#include<stdio.h>
void main()
{
int a1,a2,a3,a4,a5,a6,i,j;
long int m3,n3,m4,n4,m5,n5,m6,n6;
static int t[9];
static long s[9][10];
for(a1=1;a1<=9;a1++)
for(a2=0;a2<=9;a2++)
for(a3=0;a3<=9;a3++)
{
m3=a1*100+a2*10+a3;n3=pow(a1,3)+pow(a2,3)+pow(a3,3);
if(m3==n3)s[3][++t[3>=m3; /*三位水仙花数*/
for(a4=0;a4<=9;a4++)
{
m4=m3*10+a4;
n4=pow(a1,4)+pow(a2,4)+pow(a3,4)+pow(a4,4);
if(m4==n4) s[4][++t[4>=m4; /*四位玫瑰花数*/
for(a5=0;a5<=9;a5++)
{
m5=m4*10+a5;
n5=pow(a1,5)+pow(a2,5)+pow(a3,5)+pow(a4,5)+pow(a5,5);
if(m5==n5) s[5][++t[5>=m5; /*五位五角星数*/
for(a6=0;a6<=9;a6++)
{
m6=m5*10+a6;
n6=pow(a1,6)+pow(a2,6)+pow(a3,6)+pow(a4,6)+pow(a5,6)+pow(a6,6);
if(m6==n6) s[6][++t[6>=m6;
} } } }
for(i=3;i<=6;i++)
{
printf("\n %d位自幂数有: ",i);
for(j=1;j<=t[i];j++)
printf("%ld ",s[i][j]);
}
printf("\n");
}
程序运行结果如下:

责任编辑:cyth