C语言 “水仙花数”(包懂)

简介: C语言 “水仙花数”


请看题目:


打印水仙花数


题目内容:

求出0~100000之间的所有水仙花数并输出。


提示:

“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。



前言:


诸位应该注意到了,这里的水仙花数加了引号,其实水仙花数是自幂数的一种,三位自幂数叫做水仙花数。当然还有其他自幂数啦,一到十位自幂数的美名都在这里:

一位自幂数:独身数

两位自幂数:没有

三位自幂数:水仙花数

四位自幂数:四叶玫瑰数

五位自幂数:五角星数

六位自幂数:六合数

七位自幂数:北斗七星数

八位自幂数:八仙数

九位自幂数:九九重阳数

十位自幂数:十全十美数

好啦,不啰嗦,开始解题!



大体思路:


要求0~100000之间的自幂数,当然先生成0~100000之间的整数 i 。然后根据自幂数的特点进行判断。

要做的就是

1.计算出 i 是 n 位数;

2.剥离 i 的每一位,各求其 n 次方,相加,判断是否与 i 相等。



解题:


1.计算出 i 是 n 位数


以153为例,这是个三位数,3 是怎么来的呢?

153/10 = 15     15/10 = 1    1/10 = 0;(整形之间的除法只取商的整数部分)

直到 0 ,进行了三次;

按照这个思路写出代码:

int main()
{
  int i = 0;
  for (i = 0; i <= 1000000; i++)
  {
    //1.计算出 i 是 n 位数
    int n = 1;
    int tmp = i;//下面的循环会篡改i的值,此处把i放到tmp中进行循环
    while (tmp > 9)//两位数进入循环,放过一位数(一位数都属自幂数)
    {
      tmp /= 10;
      n++;//计数器
    }
}


2.剥离 i 的每一位,各求其 n 次方,相加,判断是否与 i 相等


%10 取出个位,/10去掉个位  照此循环直到0即可;

求 i 每一位的 n 次方,可以用pow()函数;

        tmp = i;//原理同上
    int sum = 0;
    while (tmp)
    {
      sum += pow(tmp % 10, n);//计算 i 每一位的 n 次方并求和
      tmp /= 10;
    }
    if (sum == i)
    {
      printf("%d ", i);
    }


结果展示:


#include<stdio.h>
#include <math.h>//包含pow()函数
int main()
{
  int i = 0;
  for (i = 0; i <= 1000000; i++)
  {
    //1. 计算出i是几位数 - n
    int n = 1;
    int tmp = i;
    while (tmp > 9)//153
    {
      tmp /= 10;
      n++;//1 2 3
    }
    //2.剥离 i 的每一位,各求其 n 次方,相加,判断是否与 i 相等
    tmp = i;
    int sum = 0;
    while (tmp)
    {
      sum += pow(tmp % 10, n);
      tmp /= 10;
    }
    if (sum == i)
    {
      printf("%d ", i);
    }
  }
  return 0;
}

微信图片_20230414222152.png


你学会了嘛?快动手写写吧。

目录
相关文章
|
1月前
|
C语言
C语言---自幂数(“水仙花数”)
C语言---自幂数(“水仙花数”)
50 0
|
8月前
|
C语言
C语言之水仙花数的求解与二维数组结合,使用函数调用
C语言之水仙花数的求解与二维数组结合,使用函数调用
|
1月前
|
算法 C语言
C语言 0~10000 水仙花数 判断。
C语言 0~10000 水仙花数 判断。
25 0
|
1天前
|
存储 C语言 C++
【C语言刷题系列】水仙花数的打印及进阶
【C语言刷题系列】水仙花数的打印及进阶
|
21天前
|
C语言
C语言探索:水仙花数的奥秘与计算
C语言探索:水仙花数的奥秘与计算
|
1月前
|
C语言
【C语言必刷题】6. 水仙花数
【C语言必刷题】6. 水仙花数
|
1月前
|
机器学习/深度学习 存储 C语言
用C语言轻松找出所有水仙花数
用C语言轻松找出所有水仙花数
用C语言轻松找出所有水仙花数
|
1月前
|
C语言 数据安全/隐私保护
利用C语言揭秘水仙花
利用C语言揭秘水仙花
38 0
|
7月前
|
C语言
【C语言刷题】水仙花数、打印菱形、求和
【C语言刷题】水仙花数、打印菱形、求和
50 0
|
10月前
|
C语言
【C语言初学必看】水仙花数、变种水仙花数背后的知识
【C语言初学必看】水仙花数、变种水仙花数背后的知识
101 0