C++ 实现卡普雷卡尔黑洞验证程序

卡普雷卡尔黑洞是一个有趣的数学现象,它指的是任何一个 4 位数(4 个数字均不相同),经过一系列的卡普雷卡尔运算,最终都会得到 6174。

卡普雷卡尔运算步骤:

  1. 将 4 位数的数字重新组合成可能的最大数和最小数。
  2. 将最大数减去最小数,得到一个新的 4 位数。
  3. 重复上述步骤,直到得到 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++ 语言进行验证。

C++ 实现卡普雷卡尔黑洞验证程序

原文地址: https://www.cveoy.top/t/topic/oJVq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录