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