21xrx.com
2024-12-27 01:25:28 Friday
登录
文章检索 我的文章 写文章
C++实现n位水仙花数
2023-07-08 18:51:40 深夜i     --     --
C++ n位 水仙花数

水仙花数,也被称为阿姆斯特朗数,指的是一个n位数等于其各位数字的n次方和。

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

在C++中实现n位水仙花数,需要用到循环和条件语句。

首先,需要从1开始依次遍历所有的n位数。因为一个n位数最小为10^(n-1),最大为10^n-1。

在每次遍历时,需要将当前数进行分解并计算各位数字的n次方和。可以将一个数的每一位数字取出来,可以通过数学的方法实现,也可以将数转化为一个字符串,然后遍历字符串中的每个字符。

接下来,需要判断计算得到的各位数字的n次方和与当前数是否相等。如果相等,那么该数就是一个n位水仙花数,需要将其输出。

下面是实现n位水仙花数的代码示例:

#include

#include

using namespace std;

int main() {

  int n;

  cin >> n; //输入n位数的位数

  for (int i = pow(10, n-1); i < pow(10, n); i++) {

    int sum = 0; //各位数字的n次方和

    int m = i; //将i存储在m中,以便遍历每一位数字

    while (m > 0) {

      int digit = m % 10; //取出当前数的最后一位数字

      sum += pow(digit, n); //计算该数字的n次方并加到sum中

      m /= 10; //去掉当前数最后一位数字

    }

    if (sum == i)

      cout << i << " "; //输出找到的n位水仙花数

  }

  return 0;

}

通过对输入的n位数进行遍历、分解和计算,可以找到所有的n位水仙花数并输出。这个算法的时间复杂度为O(10^n),在n较小的情况下效率较高。

  
  

评论区

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