21xrx.com
2024-12-22 19:48:02 Sunday
登录
文章检索 我的文章 写文章
C++编写水仙花数代码
2023-07-14 21:58:43 深夜i     --     --
C++ 水仙花数 编写 代码

水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在这篇文章中,我们将使用C++编写一个计算水仙花数的代码。

首先,我们需要明确计算水仙花数的步骤。对于一个n位数,我们需要依次得到每位数字,并计算每位数字的n次幂之和。然后,我们将这个和与原数比较,如果两者相等,则这个数就是水仙花数。接下来,让我们一步一步地实现这个算法。

假设我们的数字是num,我们可以使用以下代码获取每一位数字:

int digit = 0;

while (num > 0)

  digit = num % 10;

  num /= 10;

这个代码使用取模(%)操作符获取最后一位数字,并使用整除(/=)操作符从num中去掉最后一位数字。我们可以将这个代码放在一个循环中,以便依次获取每一位数字。

然后,我们可以使用以下代码计算每位数字的n次幂之和:

int sum = 0;

int n = 3; // 3位数

int temp = digit;

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

  temp *= digit;

}

sum += temp;

这个代码使用一个循环,并在循环内使用乘法操作符(*)计算每位数字的n次幂,并将结果加到总和sum中。

最后,我们将总和与原数比较来确定这个数是否为水仙花数:

if (sum == num)

  cout << num << " is a Narcissistic number" << endl;

这个代码使用一个if语句将总和与原数比较。如果它们相等,则输出这个数是水仙花数。

现在,我们可以将以上代码组合在一起,形成一个完整的程序:

#include

using namespace std;

int main() {

  int num = 153; // 假设数字为153

  int n = 3; // 3位数

  int digit = 0;

  int sum = 0;

  int temp = digit;

  while (num > 0) {

    digit = num % 10;

    num /= 10;

    temp = digit;

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

      temp *= digit;

    }

    sum += temp;

  }

  if (sum == num)

    cout << num << " is a Narcissistic number" << endl;

   else

    cout << num << " is not a Narcissistic number" << endl;

  return 0;

}

运行这个程序,我们会得到输出结果:

153 is a Narcissistic number

这个程序可以计算任意位数的水仙花数,只需要将n的值改成相应的位数即可。我们可以使用这个算法来解决水仙花数问题,并学习如何使用C++编写一个简单的程序。

  
  

评论区

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