C++ 实现卡普雷卡尔黑洞验证程序
C++ 实现卡普雷卡尔黑洞验证程序
卡普雷卡尔黑洞是一个有趣的数学现象,它指的是任何一个 4 位数(4 个数字均不相同),经过一系列的卡普雷卡尔运算,最终都会得到 6174。
卡普雷卡尔运算步骤:
- 将 4 位数的数字重新组合成可能的最大数和最小数。
- 将最大数减去最小数,得到一个新的 4 位数。
- 重复上述步骤,直到得到 6174。
C++ 程序实现:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int kaprekar(int n) {
string s = to_string(n);
while (s.length() < 4) {
s = '0' + s;
}
int max_num = 0, min_num = 0;
sort(s.begin(), s.end());
for (int i = 3; i >= 0; i--) {
max_num = max_num * 10 + (s[i] - '0');
min_num = min_num * 10 + (s[3-i] - '0');
}
int result = max_num - min_num;
if (result == 6174) {
return 1;
} else {
return 1 + kaprekar(result);
}
}
int main() {
int n;
cout << '请输入一个 4 位数 (4 个数字均不相同): ';
cin >> n;
int result = kaprekar(n);
cout << '归敛结果:' << result << endl;
return 0;
}
运行程序:
运行程序后,输入一个 4 位数,即可得到其归敛结果。例如,输入 8028,输出为:
请输入一个 4 位数 (4 个数字均不相同): 8028
归敛结果:3
说明经过 3 次卡普雷卡尔运算后,可以得到归敛结果 6174。
程序解析:
kaprekar()函数实现了卡普雷卡尔运算,它接收一个 4 位数作为参数,并返回该数经过多少次运算才能得到 6174。main()函数接收用户输入的 4 位数,并调用kaprekar()函数进行计算,最后输出归敛结果。
注意事项:
- 输入的 4 位数必须包含至少两个不同的数字。
- 该程序仅针对 4 位数有效。
希望本文能帮助你更好地理解卡普雷卡尔黑洞现象,并使用 C++ 语言进行验证。
原文地址: https://www.cveoy.top/t/topic/oJVq 著作权归作者所有。请勿转载和采集!