c++水仙花数,枚举
时间: 2024-12-07 15:12:15 浏览: 22
水仙花数源代码 c++
水仙花数是指一个 n 位数,其各位数字的 n 次幂之和等于它本身。例如,153 是一个三位数,因为 \(1^3 + 5^3 + 3^3 = 153\)。
在C++中,我们可以通过枚举所有可能的数并检查它们是否满足水仙花数的条件来找到水仙花数。以下是一个示例代码,展示了如何在C++中枚举并找出所有的三位数水仙花数:
```cpp
#include <iostream>
#include <cmath>
bool isNarcissistic(int number) {
int originalNumber = number;
int sum = 0;
int digits = 0;
// 计算数字的位数
while (originalNumber != 0) {
originalNumber /= 10;
digits++;
}
originalNumber = number;
// 计算各位数字的 digits 次幂之和
while (originalNumber != 0) {
int digit = originalNumber % 10;
sum += pow(digit, digits);
originalNumber /= 10;
}
return sum == number;
}
int main() {
std::cout << "三位数的水仙花数有:" << std::endl;
for (int i = 100; i < 1000; ++i) {
if (isNarcissistic(i)) {
std::cout << i << std::endl;
}
}
return 0;
}
```
这个程序首先定义了一个函数 `isNarcissistic` 来检查一个数是否为水仙花数。然后在 `main` 函数中,程序枚举了所有的三位数并调用 `isNarcissistic` 函数来检查每个数是否为水仙花数。如果是,则将其打印出来。
阅读全文