论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C趣味程序(二)(09)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:31

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");
}

程序运行结果如下:

上一篇:{实例}C趣味程序(二)(08) 人气:5287
下一篇:{实例}螺旋矩阵 人气:5530
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058