C语言---自幂数(“水仙花数”)

简介: C语言---自幂数(“水仙花数”)

1.打印0~100000的自幂数

#include<stdio.h>
#include<math.h>
int main()
{
  int i = 0; 
  for (i = 0; i<100000; i++)
  {
    int n = 0;
    int temp = i;
    //判断位数
    while (temp)
    {
      n++;
      temp = temp / 10;
    }
    //每个数字求和
    temp = i;
    int sum = 0;
    while (temp)
    {
      sum = sum + pow(temp % 10, n);
      temp = temp / 10;
    }
    if (sum == i)
    {
      printf("%d ", i);
    }
  }
}

自幂数就是一个数字每个数位上的数的位数次方,例如三位数123,位数是3,即1的3次方+2的3次方+3的3次方!=123,所以不是自幂数;

对于这个题目,1~100000,我们要确定他的位数,对这个数字进行除10操作,123进入后得1,除10之后是12,12进入后是2,除10是1,1进入后n是3,除以10后是0,跳出循环,这个时候得到的n就是位数;

接下来就是对每个数字求和,这里用到pow函数,这个函数有2个参数,第一个是底数,第二个是次数,我们从最低位开始计算,每次的结果加到sum上,对数字进行取余操作得到高一位的数字,依次进行相同的操作;

这里引入temp是因为i是最外层的循环变量,所以如果直接使用i就会无法遍历1~100000的每一个数字,所以我们引入中间变量temp,把i数值赋值给temp,我们对temp进行操作,这样就不会影响i的数值;

当i和sum相同的时候,就是符合条件的自幂数。

相关文章
|
C语言
C语言之水仙花数的求解与二维数组结合,使用函数调用
C语言之水仙花数的求解与二维数组结合,使用函数调用
|
8月前
|
算法 C语言
C语言 0~10000 水仙花数 判断。
C语言 0~10000 水仙花数 判断。
78 0
|
7月前
|
C语言
C语言实现水仙花数与99乘法表
C语言实现水仙花数与99乘法表
|
7月前
|
存储 C语言 C++
【C语言刷题系列】水仙花数的打印及进阶
【C语言刷题系列】水仙花数的打印及进阶
|
7月前
|
C语言
C语言探索:水仙花数的奥秘与计算
C语言探索:水仙花数的奥秘与计算
123 0
|
8月前
|
C语言
【C语言必刷题】6. 水仙花数
【C语言必刷题】6. 水仙花数
|
8月前
|
机器学习/深度学习 存储 C语言
用C语言轻松找出所有水仙花数
用C语言轻松找出所有水仙花数
用C语言轻松找出所有水仙花数
|
8月前
|
C语言 数据安全/隐私保护
利用C语言揭秘水仙花
利用C语言揭秘水仙花
81 0
|
C语言
【C语言刷题】水仙花数、打印菱形、求和
【C语言刷题】水仙花数、打印菱形、求和
92 0
|
C语言
【C语言初学必看】水仙花数、变种水仙花数背后的知识
【C语言初学必看】水仙花数、变种水仙花数背后的知识
163 0