C语言求出0~100000之间的所有“水仙花数”并输出
程序员文章站
2022-03-09 16:09:38
...
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。
代码如下,代码里有详细注释。
#include <stdio.h>
#include <windows.h>
#include <math.h>
#define M 100000//对其宏定义可以将其修改成任意数
int main()
{
int i = 1;
printf("0到%d的水仙花数为:\n",M);
for (; i <= M; i++)
{
int count = 1;//水仙花数至少是一位
int temp = i;
int sum = 0;
while (temp / 10)//利用while循环判断该数的位数
{
count++;
temp /= 10;
}
temp = i;//重新给temp赋值,因为temp在while循环中已经被修改了
while (temp)//判断该数是否是水仙花数
{
sum += pow(temp % 10, count);//对temp求余是求它的每一位数,再利用pow函数对其每一位求n次方,n为它的位数
temp /= 10;//对temp除10是每次将它的最低位除去
}
if (i == sum)
{
printf("%d ", sum);
}
}
system("pause");
return 0;
}
运行截图:
上一篇: 信息学蒟蒻域ACM模拟赛题解
推荐阅读
-
利用c语言求出0~999之间的所有“水仙花数”并输出
-
c语言:3种方法;求出0~999之间的所有“水仙花数”并输出。
-
C语言试题一之计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和
-
c语言:3种方法;求出0~999之间的所有“水仙花数”并输出。
-
一个正整数加上100之后是完全平方数,再加上100之后还是完全平方数, 编程求出这样的数并输出(在10000以内C语言实现)
-
求出0~999之间的所有“水仙花数”并输出。
-
求出0~999之间的所有“水仙花数”并输出
-
求出0~999之间的所有“水仙花数”并输出
-
求出0~999之间的所有“水仙花数”并输出。
-
求出0〜999之间的所有“水仙花数”并输出