C语言:求各位3-9位自幂数及和

#include <stdio.h>
#include <math.h>
main()
{
    int b,c=0,d,shu[10],f,g=4,a,e;
    double sum=0;
    for(a=100;a<=1000000000;a++)
    {
        for(e=0;e<10;e++)
        shu[e]=0;
        e=0;
        f=0;
        b=a;
        while(b)
        {
            shu[e]=b%10; 
            b=b/10; 
            e++;
         } 
         c=e;
         for(e=0;e<=c;e++)
         f=f+pow(shu[e],c);
         if(f==a) printf("%d ",a),sum=sum+a;
         if(g!=e) printf("\n"),g=e;
    } 
    printf("\n3-9位自幂数的和=%.0lf",sum);
    getchar();
 }

 

 

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

常见水仙花数

水仙花数又称阿姆斯特朗数。
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙数共有3个:24678050,24678051,88593477;
九位的九九重阳数共有4个: 146511208,472335975,534494836,912985153;
十位的自幂数只有1个:4679307774
#include<stdio.h>
#include <time.h> 
int cf (int d,int c)
{
    int z=1;
    while(c--)
    {
        z=z*d;
    }
    return z;
}
main()
{
    time_t tt;
    time(&tt);
    printf ( "当前本地时间为: %s", ctime(&tt));
    int i,c,z,w,e,g=3;
    unsigned long int s=0; 
    int shu[10];
    for(i=100;i<=1000000000;i++)
    {    

    z=i;c=0;e=0;w=0;
        while(z!=0)
        {
            shu[c++]=z%10;
            z=z/10;
            s++;
        }
        while(e<c)
        w=cf(shu[e++],c)+w;
        if(w==i)
        s=s+i,printf("%d ",i);
        if(g!=c) printf("\n");
        }
        printf("\n和是%ud",s);
        time(&tt);
    printf ( "\n当前本地时间为: %s", ctime(&tt));
    }

 

 

#include <stdio.h>
#include <math.h>
#include <time.h> 
int n(int j);
main()
{
    time_t tt;
    time(&tt);
    printf ( "当前本地时间为: %s", ctime(&tt));
    int i,j,sum,x;
    for(j=100;j<=1000000000;j++)
    {
        x=n(j);//printf("%d",x);
        sum=0;
        for(i=j;i;i=i/10)
        {
            sum=sum+pow(i%10,x);
            //printf("%d ",sum);
        }
        if(sum==j)
        {
            printf("%d ",j);
        }
    }
    time(&tt);
    printf ( "\n当前本地时间为: %s", ctime(&tt));

}
int n(int j)
{
    int m=j,i=0;
    while(m)
    {
        m=m/10;
        i++;
    }
    return i;
}

 

 

posted @ 2022-12-02 10:45  myrj  阅读(230)  评论(0编辑  收藏  举报