分析一下个人的思路:
先利用 num/10 计算出num 一共有几位
然后将num重新置为i,再利用num%10取num的最低位
最后利用power函数计算出sum值,sum等于i即该数为水仙花数。
创作不易,希望能给大家带来一点帮助。
#include<stdio.h>
int power(int m, int n)// 构建一个power函数,计算m的n次方
{
if (n != 0)
return m * fun(m, n - 1);
else
{
return 1;
}
}
int main()
{
int i = 0;
for (i = 1; i < 100000; i++)
{
int num=i;
int n = 0;//计算当前num的位数n
while (num)
{
num=num / 10;
n++;
}
int sum = 0; //求和
num = i;//重新将num赋值i
while (num)
{
int m = num % 10;//m保存当前num的个位数
int res = power(m, n);//调用函数计算每个数的次方
num /= 10;//num左移
sum += res;//各个数的次方和
}
//判断
if (sum == i)
printf("%d是水仙数\n", i);
}
}
版权声明:本文为m0_56165538原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。