c++取给定范围内的水仙花数
时间: 2024-10-02 09:02:31 浏览: 34
水仙花数( narcissistic number 或者 pluperfect digital invariant),是指一个三位数(或更高位数),其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
在C++中,要找出给定范围内的所有水仙花数,可以按照以下步骤编写代码:
```cpp
#include <iostream>
#include <vector>
bool isNarcissistic(int num) {
int sumOfDigits = 0;
int temp = num;
while (temp > 0) {
int digit = temp % 10;
sumOfDigits += digit * digit * digit;
temp /= 10;
}
return sumOfDigits == num;
}
std::vector<int> findNarcissisticNumbers(int start, int end) {
std::vector<int> narcissists;
for (int i = start; i <= end; ++i) {
if (isNarcissistic(i)) {
narcissists.push_back(i);
}
}
return narcissists;
}
int main() {
int rangeStart = 100; // 可根据需要调整
int rangeEnd = 999; // 另一端也是可调整的
std::vector<int> result = findNarcissisticNumbers(rangeStart, rangeEnd);
std::cout << "水仙花数在(" << rangeStart << ", " << rangeEnd << "]范围内的有:";
for (const auto &num : result) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
这段代码首先定义了一个`isNarcissistic`函数,用于检查单个整数是否为水仙花数;然后在`findNarcissisticNumbers`函数中遍历指定范围内所有的数,如果找到就加入到结果向量中。最后,在`main`函数中打印出符合条件的水仙花数。
阅读全文