C++判断水仙花数:算法原理与完整代码实现

陆遥
陆遥
发布时间:2026-10-16| 5人浏览过
原创

本文介绍如何利用 C++ 语言识别并输出水仙花数(Armstrong number)。通过取模与除法运算分离百位、十位及个位,结合循环结构完成范围筛选,并提供完整的函数封装与执行结果。

一、水仙花数定义与识别原理

水仙花数(Narcissistic number),又称超完全数字不变数或阿姆斯特朗数,特指一个 3 位数满足以下数学特征:其每个数位上的数字的 3 次幂之和恰好等于该数本身。例如:1^3 + 5^3 + 3^3 = 153,因此 153 是一个水仙花数。

在 C++ 中进行判断的核心在于对整数进行数位拆分。假设目标数值为 a(100 ≤ a ≤ 999),可以通过基础算术运算符获取各个位置上的数字:

  • 百位数 (x1):直接除以 100 并取整,即 a / 100。
  • 十位数 (x2):先对 100 取模以去除百位影响,再除以 10,即 (a % 100) / 10。
  • 个位数 (x3):直接对 10 取模,即 a % 10。

得到三个数位后,计算 sum = x1^3 + x2^3 + x3^3。若 sum == a,则判定为水仙花数。

二、C++ 代码实现步骤

第1步:封装数位检测函数

为了提高代码复用性,我们将判断逻辑封装为一个名为 narcissus 的布尔类型函数。该函数接收一个整型参数 a,内部完成数位提取与幂运算求和。


/* Alkaid#3529 */
bool narcissus(int a)
{
	int sum = 0; // 记录最终求和结果

	int x1 = a / 100; // 原数除以100即为百位
	int x2 = (a % 100) / 10; // 原数模100后,除以10就是十位数
	int x3 = a % 10; // 模10的结果就是个位数

	// 对得到的各位数的三次幂求和
	sum = x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3;

	// 判断求和结果与原数是否相等
	if (sum == a)
		return true;
	else
		return false;
}

第2步:构建主程序与循环控制

在 main 函数中,我们使用 for 循环从 100 开始遍历至 999。对于每一个循环变量,调用上述函数进行检测,若返回真值则将其打印输出。


#include <iostream>
using namespace std;

bool narcissus(int a);

int main()
{
	cout << "水仙花数有:  ";

	// 从100开始,逐个检查所有三位数
	for (int i = 100; i < 1000; i++)
	{
		if (narcissus(i))
			cout << i << "  ";
	}

	cout << endl;
	return 0;
}

// 省略函数具体实现...

将上述两段代码合并运行后,控制台将列出所有符合定义的水仙花数:

三、执行结果验证

编译并执行该程序,终端会按照从小到大的顺序输出所有 3 位水仙花数(通常包括 153, 370, 371, 407)。程序运行无异常报错,验证了逻辑的正确性与语法的有效性。

以上就是 C++ 实现水仙花数判断实例的详细内容,更多关于 C++ 阿姆斯特朗数基础算法的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。