2.3.1 三位水仙花数
2.3.2 四位玫瑰花数
2.3.3 综合求3~6位自幂数
2.3 自方幂数
一个n位正整数假如等于它的n个数字的n次方和,该数称为n位自方幂数。
三位自方幂数又称水仙花数。
四位自方幂数又称玫瑰花数。
五位自方幂数又称五角星数。
六位自方幂数又称六合数。
试求出所有3~6位自方幂数。
2.3.1 三位水仙花数
1、算法分析
求自方幂数采用穷举判定法。求n位自方幂数,对所有n位整数一 一判定,假如其数字的n次方和等于它自身,则打印输出。
求n个数字的n次方和,常见有以下两种方法:
1)设置n重循环,每位数设置循环;最高位从1~9,其余各位数从0~9。n个数字的n次方的和即n个循环变量的n次方和。
2)从最小的n位数至最大的n位数循环,对每一个n位数分离其各个数字,然后求数字的n次方和。
两种方法从循环次数来说是一样的,前者实施起来较为简便。
程序代码如下:
#include<stdio.h>
void main()
{
int i,j,k,m1,m2;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
m1=i*100+j*10+k; /*m1为三个数字分别为i,j,k的三位数*/
m2=i*i*i+j*j*j+k*k*k; /*m2为三个数字的立方和*/
if(m1==m2) printf("%3d ",m1); /*输出满足水仙花条件的数*/
}
printf("\n");
}
程序运行结果:
水仙花数有:
153 370 371 407
--------------------------------
2.3.2 四位玫瑰花数
采用上述方法2)设计的求四位玫瑰花数的程序如下:
程序运行结果如下:
#include<stdio.h>
void main()
{
int i,s,n,a,m;
printf("四位玫瑰花数有: \n");
for(a=1000;a<=9999;a++)
{
s=0;n=a;
for(i=1;i<=4;i++)
{
m=n%10; n=n/10; s=s+m*m*m*m;;
}
if(a==s) printf("%d ",a);
}
printf("\n");
}
四位玫瑰花数有:
1634 8208 9474
----------------------------------
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");
}
程序运行结果如下:
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |