/*
求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。
共五位数,设置一个数组用来保存数字的每一位,数组的有效长度就是该数的位数。最后读取数组的每位数字来判断水仙花数。
*/
#include <stdio.h>
#include <stdlib.h>
//如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 * 则是取内容操作符,意思是取这个内存地址里存储的内容。
void getPerBite(int num,int bArray[],int *bArrayLength)//num的每位数字存储到数组bArray中
{
while(num > 0)
{
bArray[*bArrayLength] = num % 10;//取num的每一位数字
*bArrayLength += 1;//数组实际长度+1
num /= 10;//从num中删除一位数字
}
}
int pow(int x,int y)//求x的y次幂
{
int mul = 1;
for(int i = 1;i <= y; i++)
{
mul *= x;
}
return mul;
}
void isNarcNum(int num,int bArray[],int bArrayLength)//判断num是否为水仙花数
{
int bSum = 0;
for(int i = 0;i < bArrayLength;i++)//访问num的每一位
{
bSum += pow(bArray[i],bArrayLength);
}
if(bSum == num)
printf("%d\n",num);
}
int main()
{
for(int iNum = 1;iNum <= 20000;iNum ++)
{
int bArray[10] = {0};
int bArrayLength = 0;
getPerBite(iNum,bArray,&bArrayLength);//取出num中每一位存储到数组bArray中
isNarcNum(iNum,bArray,bArrayLength);
}
}
20、求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python 4位水仙花数 python3位数水仙花数的代码
Python 判断三位水仙花数
python 4位水仙花数 类型转换 条件语句 赋值 -
java三位所有水仙花数 java水仙花数思路
水仙花数(超完全数字不变数):是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。 举例:153=1*1*1+5*5*5+3*3*3。求100-1000以内的水仙花数: 处理逻辑:
java三位所有水仙花数 完数 水仙花数 质数 java基础