C语言:水仙花数。
浙大版《C语言程序设计实验与习题指导(第3版)》题目集
实验4-2-5 水仙花数(20 分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
例如:153=1^3+5^3+3^3。 本题要求编写程序,计算所有N位水仙花数。
/*
a是余数,m1为取数上限,
sum为每个位上的数字的N次幂之和,
i用以控制循环取余的次数 ,
因为m用于遍历,故使M=m,用M进行变化。
*/
int main( ) {
int m,m1,M,i;
int a,sum=0;
double n;
scanf("%lf",&n);
a是余数,m1为取数上限,
sum为每个位上的数字的N次幂之和,
i用以控制循环取余的次数 ,
因为m用于遍历,故使M=m,用M进行变化。
*/
int main( ) {
int m,m1,M,i;
int a,sum=0;
double n;
scanf("%lf",&n);
m=pow(10,n-1);
m1=pow(10,n);
for(;m<m1;m++) //遍历从10..0(n-1位)到10...0(n位)
{
M=m;
sum=0;
for(i=0;i<n;i++)
{
a=M%10; //取余,分解
sum=pow(a,n)+sum;
M=M/10;
}
if(sum==m)
{
printf("%d\n",m);
}
}
return 0;
}
m1=pow(10,n);
for(;m<m1;m++) //遍历从10..0(n-1位)到10...0(n位)
{
M=m;
sum=0;
for(i=0;i<n;i++)
{
a=M%10; //取余,分解
sum=pow(a,n)+sum;
M=M/10;
}
if(sum==m)
{
printf("%d\n",m);
}
}
return 0;
}