输入一个正整数,判断是否是水仙花数
时间: 2024-12-11 14:17:12 浏览: 25
水仙花数(Narcissistic Number)是指一个三位数(或更多位),其各位数字立方和等于该数本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是一个简单的C++程序,用于判断一个正整数是否为水仙花数:
```cpp
#include <iostream>
bool isNarcissistic(int number) {
// 对于四位及以上的数,我们直接忽略前三位进行计算
if (number >= 1000) {
int lastDigit = number % 10;
return (lastDigit * lastDigit * lastDigit == number);
}
int sumOfCubes = 0;
int digit;
while (number != 0) {
digit = number % 10;
sumOfCubes += digit * digit * digit; // 计算每一位立方和
number /= 10; // 移除最低位
}
return (sumOfCubes == number); // 返回两者相等则为水仙花数
}
int main() {
int num;
std::cout << "Enter a positive integer: ";
std::cin >> num;
if (isNarcissistic(num)) {
std::cout << num << " is a Narcissistic number." << std::endl;
} else {
std::cout << num << " is not a Narcissistic number." << std::endl;
}
return 0;
}
```
这个程序首先检查输入的数是否至少是三位数,然后逐位计算并累加每个数字的立方,最后比较累计和是否与原始数字相同。
阅读全文