21xrx.com
2024-12-23 02:28:58 Monday
登录
文章检索 我的文章 写文章
C++实现水仙花数的程序
2023-07-02 13:10:53 深夜i     --     --
C++ 水仙花数 程序实现

水仙花数,也叫阿姆斯特朗数,是指一个 n 位正整数(n≥3)等于其各位数字的 n 次幂之和。

例如,153 就是一个三位的水仙花数,因为 1^3 + 5^3 + 3^3 =153。

接下来介绍一下使用 C++ 实现水仙花数的程序。

首先,我们需要明确的是,n 位的水仙花数最大值为 9^n。所以,我们需要一个循环,从 1 循环到 9^n,判断每个数是否为水仙花数。

接着,我们需要知道如何得到一个数的位数。可以使用以下公式: int n = floor(log10(num)) + 1; 其中,log10 表示以 10 为底数的对数函数,floor 表示向下取整。这个公式中,num 是要计算位数的数。

最后,我们就可以编写出来程序了。代码如下:


#include<iostream>

#include<cmath>

using namespace std;

int main()

{

  int n; // n为位数

  int num; // 枚举的数

  int sum; // 各位数字的n次幂之和

  int maxnum; // 最大的n位数

  cout << "请输入要计算的最大的n位数n:";

  cin >> n;

  maxnum = pow(10, n) - 1; // 最大的n位数

  for (int i = 1; i <= maxnum; i++)

  {

    num = i;

    sum = 0; // 初始化为0

    while (num != 0)

    {

      sum += pow((num % 10), n); // 逐个计算每个数字的n次幂之和

      num /= 10;

    }

    if (sum == i) // 如果等于本身,就输出

    

      cout << i << "是一个" << n << "位的水仙花数" << endl;

    

  }

  return 0;

}

我们的程序首先要求用户输入要计算的最大的位数 n,然后使用循环枚举从 1 到 9^n 的每个数,计算其各位数字的 n 次幂之和,最后判断是否为水仙花数并输出。

可以试着输入不同的 n 来验证程序的正确性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复