水仙花数(加扩展自幂数)

简介: 水仙花数(加扩展自幂数)

什么是自幂数?

如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。

eb6f13b3d14c461a932cffef1e1de1c8.png


水仙花数

求“水仙花数”并输出。

“水仙花数”是指一个3位数,其各位数字的立方之和确好等于该数本身.

如:153=1^3+5^3+3^3,则153是一个“水仙花数”。


思路

因为水仙花数在100~999之间,所以直接for循环变量i,然后分别求出百位数,十位数,个位数,

最后立方和,判断是否相等就可以。

代码如下:

#include<stdio.h> 
#include<math.h>
int main()
{
  int i = 0;
  for (i = 100; i <1000; i++)//控制i在100~999之间
  {
    int a = i / 100;
    int b = i / 10 % 10;
    int c = i % 10;
    if (i == pow(a, 3) + pow(b, 3) + pow(c, 3))
    {
      printf("%d ", i);//打印
    }
  }
  return 0;
}


扩展自幂数

扩展,就是不局限于求“水仙花数”这个自幂数,可以求更多的自幂数。

例如:求出0~100000之间的所有自幂数并输出。

思路

基本的思路和水仙花数是差别不大的,但是其中多一点东西,那么多一些什么呢?

废话少说,下面我们直接上代码:

#include <math.h>
#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 0; i <= 1000000; i++)
  {
    //1. 计算出i是几位数 - n
    int n = 1;
    int tmp = i;
    while (tmp>9)
    {
      tmp /= 10;
      n++;
    }
    //计算i的十进制的每一位的n次方之和,判断是否等于i本身
    tmp = i;
    int sum = 0;
    while (tmp)
    {
      sum += (int)pow(tmp % 10, n);
      tmp /= 10;
    }
    if (sum == i)
    {
      printf("%d ", i);
    }
  }
  return 0;
}

相信大家都发现多了什么,没错,就是多了一个求这个数是个几位数,用了一个很简单的小循环,运行结果给大家贴出来了,我们下次见~ ̄︶ ̄∗)

求各位大佬点赞,评论加关注,喜欢的也可以关注此专栏,将持续更新一些经典有趣的题。😋

39accfdc44664cd1891a54c81e98cd71.png

目录
相关文章
|
6月前
练习实例 - 水仙花数
【1月更文挑战第14天】水仙花数。
51 0
|
13天前
Armstrong 数
【10月更文挑战第24天】Armstrong 数。
31 7
|
19天前
找出最大的数
【10月更文挑战第18天】找出最大的数。
17 6
|
6月前
|
C++
第三大的数(C++)
第三大的数(C++)
41 0
|
6月前
|
C#
C#求100-999之间的水仙花数,你知道多少个?让我们一起来探索!
C#求100-999之间的水仙花数,你知道多少个?让我们一起来探索!
115 0
|
人工智能 运维 物联网
数智光伏,走在希望的田野上
数智光伏,走在希望的田野上
|
C++
201612-1 中间数
201612-1 中间数
71 0
201612-1 中间数
|
C++
201312-4 有趣的数
201312-4 有趣的数
65 0
201312-4 有趣的数