C++实现角谷猜想算法:详细步骤与代码示例

角谷猜想,也称为3n+1猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。

例如:

假定初始整数为5,计算过程分别为16、8、4、2、1。

代码实现:

#include <iostream>

void collatzConjecture(int n) {
    while (n != 1) {
        std::cout << n << std::endl;
        if (n % 2 == 0) {
            n /= 2;
        } else {
            n = n * 3 + 1;
        }
    }
    std::cout << 'End' << std::endl;
}

int main() {
    int n;
    std::cin >> n;
    collatzConjecture(n);
    return 0;
}

代码解释:

  1. collatzConjecture(int n) 函数:

    • 接收一个正整数 n 作为输入。
    • 使用 while 循环,直到 n 等于 1。
    • 在循环内部,判断 n 的奇偶性:
      • 如果 n 是偶数,则将 n 除以 2。
      • 如果 n 是奇数,则将 n 乘以 3 加 1。
    • 在每次循环中,输出当前的 n 值。
    • 循环结束后,输出 'End'。
  2. main() 函数:

    • 从用户输入一个正整数 n。
    • 调用 collatzConjecture(n) 函数,执行角谷猜想算法。

编译和运行:

  1. 将代码保存为 collatz.cpp 文件。
  2. 使用编译器编译代码,例如:g++ collatz.cpp -o collatz
  3. 运行编译后的可执行文件,例如:./collatz
  4. 输入一个正整数,程序将输出从输入整数到 1 的步骤。

示例:

输入:5 输出: 5 16 8 4 2 1 End

注意:

角谷猜想尚未被证明,但对于所有已知的正整数,该算法最终都能够得到 1。

希望本文能够帮助你理解角谷猜想算法,并学会使用 C++ 代码实现该算法。

C++实现角谷猜想算法:详细步骤与代码示例

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

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