21xrx.com
2024-11-10 00:02:16 Sunday
登录
文章检索 我的文章 写文章
用C++编程实现水仙花数的计算
2023-07-06 19:22:07 深夜i     --     --
C++ 水仙花数 编程 计算

水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为$1^3+5^3+3^3=153$。在这篇文章中,我们将介绍如何使用C++编程计算水仙花数。

首先,我们需要明确水仙花数的范围。既然要计算三位数,那么我们需要枚举所有的三位数,即从100到999。在C++中,我们可以用for循环来实现:


for(int i=100; i<=999; i++)

  // 计算i是否是水仙花数

接下来,我们需要计算每个三位数是否是水仙花数。这可以通过将每个数的各位数字进行拆分,并计算它们的立方和来实现。在C++中,我们可以使用模运算符和整数除法来拆分数字。例如:


int num = 153;

int digit1 = num / 100; // digit1等于1

int digit2 = (num % 100) / 10; // digit2等于5

int digit3 = num % 10; // digit3等于3

接下来,我们可以使用这些数字计算立方和,并将其与原数字进行比较。如果相等,则说明该数是水仙花数。在C++中,我们可以使用pow函数来计算立方。完整的代码如下:


#include <iostream>

#include <cmath>

using namespace std;

int main()

{

  for(int i=100; i<=999; i++){

    int digit1 = i / 100;

    int digit2 = (i % 100) / 10;

    int digit3 = i % 10;

    if(pow(digit1, 3) + pow(digit2, 3) + pow(digit3, 3) == i)

      cout << i << "是水仙花数" << endl;

    

  }

  return 0;

}

现在我们只需要运行这段代码,它将输出所有的水仙花数:


153是水仙花数

370是水仙花数

371是水仙花数

407是水仙花数

这样,我们就成功地使用C++编程计算了水仙花数。这个算法的时间复杂度为$O(n)$,因为它需要枚举$n$个数。如果我们只需要计算单个数是否为水仙花数,则时间复杂度为$O(1)$。

  
  

评论区

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