21xrx.com
2025-04-15 07:50:14 Tuesday
文章检索 我的文章 写文章
C++实现水仙花数算法
2023-07-07 02:20:43 深夜i     15     0
C++ 水仙花数 算法

水仙花数是指一个n位数(n≥3)其各位数字的n次方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3=153。

在C++语言中,可以利用循环和条件语句来实现水仙花数算法。具体步骤如下:

1. 定义变量:需要定义变量n,digit,sum。

2. 输入数字:从控制台输入一个数字n,表示需要判断的数。

3. 计算位数:使用while语句计算该数的位数,即不断将n除以10直到商为0,这样能得到该数的位数digit。

4. 计算水仙花数:使用for语句循环检查每个位数上的数字,并计算当前位数的数字的digit次方。使用if语句判断当前位数的数字的digit次方是否等于sum。累加每个位数的数字的digit次方之和,若等于n,则该数是水仙花数,输出结果。

以下是C++代码实现:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
  int n, digit, sum = 0, num;
  cout << "请输入一个三位数以上的数字:" << endl;
  cin >> n;
  num = n;
  while (num != 0) {
    digit++;
    num /= 10;
  }
  num = n;
  for (int i = 0; i < digit; i++) {
    int remainder = num % 10;
    sum += pow(remainder, digit);
    num /= 10;
  }
  if (sum == n)
    cout << "该数是水仙花数。" << endl;
   else
    cout << "该数不是水仙花数。" << endl;
  
  return 0;
}

该程序能够实现对任意三位数以上的数字的水仙花数判断。可以根据需要进行修改。

  
  

评论区

请求出错了