本文主要是介绍利用c++判断水仙花数并输出示例代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以...
以下是使用C++实现的相同逻辑代码:
#include <IOStream> #include <vector> #include <string> #include <cmath> // 判断一个数是否为水仙花数 bool isNarcissistic(int n) { std::string numStr = std::to_string(n); int numDigits = numStr.length(); int sum = 0; // 遍历每一位数字 for (int i = 0; i < numDigits; i++) { // 将字符数字转换为整数 int digit = numStr[i] - '0'; // 计算该位数字的 n 次幂并累加 sum += static_cast<int>(std::pow(digit, numDigits)); } NlVvcgrvST // 判断总和是否等于原数 return sum == n; } // 查找指定范围内的水仙花数 std::vector<int> findNarcissisticNumbers(int min, int max) { std::vector<int> results; for (int i = min; i <= max; i++) { if (isNapythonrcissistic(i)) { results.push_back(i); } } return results; } int main()js { // 输出所有3位水仙花数(100-999) std::vector<int> narcissisticNumbers = findNarcissisticNumbers(100, 999); // 格式化输出 if (!narcissisticNumbers.empty()) { std::cout << "3位水仙China编程花数有:" << std::endl; for (int num : narcissisticNumbers) { std::cout << num << std::endl; } } else { std::cout << "该范围内没有水仙花数" << std::endl; } return 0; }
以下是使用纯数学运算(不用字符串转换)的替代版本:
#include <iostream>
#include <vector>
// 判断一个数是否为水仙花数(纯数学方法)
bool isNarcissistic(int n) {
int original = n;
int numDigits = 0;
int temp = n;
// 计算位数
while (temp > 0) {
numDigits++;
temp /= 10;
}
int sum = 0;
temp = original;
// 遍历每一位数字
while (temp > 0) {
int digit = temp % 10;
// 计算digit的numDigits次幂
int power = 1;
for (int i = 0; i < numDigits; i++) {
power *= digit;
}
sum += power;
temp /= 10;
}
// 判断总和是否等于原数
return sum == original;
}
// 查找指定范围内的水仙花数
std::vector<int> findNarcissisticNumbers(int min, int max) {
std::vector<int> results;
for (int i = min; i <= max; i++) {
if (isNarcissistic(i)) {
results.push_back(i);
}
}
return results;
}
int main() {
// 输出所有3位水仙花数(100-999)
std::vector<int> narcissisticNumbers = findNarcissisticNumbers(100, 999);
// 格式化输出
if (!narcissisticNumbers.empty(http://www.chinasem.cn)) {
std::cout << "3位水仙花数有:" << std::endl;
for (int num : narcissisticNumbers) {
std::cout << num << std::endl;
}
} else {
std::cout << "该范围内没有水仙花数" << std::endl;
}
return 0;
}
两个版本的功能相同,都能正确找到153、370、371、407这4个3位水仙花数。第一个版本更接近原Lua代码的逻辑,使用字符串处理;第二个版本使用纯数学运算,在某些情况下性能更好。
总结
到此这篇关于利用c++判断水仙花数并输出的文章就介绍到这了,更多相关c++判断水仙花数并输出内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于利用c++判断水仙花数并输出示例代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!