21xrx.com
2024-12-27 16:27:09 Friday
登录
文章检索 我的文章 写文章
C++实现水仙花数算法
2023-07-08 14:48:07 深夜i     --     --
C++ 水仙花数 算法

水仙花数是指一个三位数,其各位数字的立方之和恰好等于它本身。例如,153就是一个水仙花数,因为$1^3+5^3+3^3=153$。

C++是一种常用的高级编程语言,可以用于编写各种各样的计算机程序。下面介绍如何在C++中实现水仙花数的算法。

首先,我们需要一个for循环来遍历所有的三位数。我们可以使用嵌套的三个for循环,分别循环百位、十位和个位上的数字。代码如下:


for (int i = 1; i <= 9; i++) {

  for (int j = 0; j <= 9; j++) {

    for (int k = 0; k <= 9; k++)

      // do something

    

  }

}

在三重循环内部,我们需要计算当前三位数是否是水仙花数。首先,我们可以将百位、十位和个位数字分别保存到变量i、j和k中。然后,我们可以计算它们的立方和,并将结果保存到变量sum中。最后,我们比较sum和当前的三位数是否相等,若相等则输出当前三位数是水仙花数。代码如下:


for (int i = 1; i <= 9; i++) {

  for (int j = 0; j <= 9; j++) {

    for (int k = 0; k <= 9; k++) {

      int sum = i*i*i + j*j*j + k*k*k;

      int num = i*100 + j*10 + k;

      if (sum == num)

        cout << num << " is a narcissistic number." << endl;

      

    }

  }

}

最终的完整代码如下:


#include <iostream>

using namespace std;

int main() {

  for (int i = 1; i <= 9; i++) {

    for (int j = 0; j <= 9; j++) {

      for (int k = 0; k <= 9; k++) {

        int sum = i*i*i + j*j*j + k*k*k;

        int num = i*100 + j*10 + k;

        if (sum == num)

          cout << num << " is a narcissistic number." << endl;

        

      }

    }

  }

  return 0;

}

执行该程序,就可以输出所有的水仙花数:


153 is a narcissistic number.

370 is a narcissistic number.

371 is a narcissistic number.

407 is a narcissistic number.

  
  

评论区

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