21xrx.com
2024-12-22 22:56:33 Sunday
登录
文章检索 我的文章 写文章
C++程序:输出所有的水仙花数
2023-06-29 00:02:23 深夜i     --     --
C++ 水仙花数 输出

水仙花数是指一个3位数,其各个位上的数字的立方和等于该数本身。比如说,153是一个水仙花数,因为1的3次方+5的3次方+3的3次方等于153。现在,我们可以使用C++程序来输出所有的水仙花数。

首先,我们需要使用for循环来枚举所有的3位数。具体来说,我们需要从100开始,一直枚举到999。在for循环的语句块中,我们可以使用一个变量num来表示当前枚举到的数字。

接下来,我们需要计算num各个位上的数字的立方和。我们可以使用while循环来完成这个任务。具体来说,我们每次将num对10取模来得到个位数,然后计算该数字的立方,加入到总和中。之后,我们将num除以10,以便计算十位数的立方和。当num等于0时,我们已经计算完了所有位数的立方和。

最后,我们需要判断当前的num是否是水仙花数。如果是,我们就将其输出。具体来说,我们需要将计算出的立方和与当前的num进行比较,如果相等就输出num。这个比较可以使用if语句来完成。

下面是完整的C++程序:


#include <iostream>

using namespace std;

int main() {

  for (int num = 100; num < 1000; num++) {

   int sum = 0;

   int temp = num;

   while (temp > 0) {

     int digit = temp % 10;

     sum += digit * digit * digit;

     temp /= 10;

   }

   if (sum == num)

     cout << num << endl;

   

  }

  return 0;

}

运行这个程序,我们可以得到所有的水仙花数,它们分别是153、370、371和407。这个程序的时间复杂度是O(n),其中n为3位数的个数,即900。因为900是一个常数,所以这个程序的时间复杂度可以看作是O(1)。

  
  

评论区

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