考拉兹猜想

研究历史

在1930年代，德国汉堡大学的学生考拉兹，曾经研究过这个猜想。在1960年，日本人角谷静夫也研究过这个猜想。但这猜想到目前，仍没有任何进展。
保罗·艾狄胥就曾称，数学上尚未为此类问题提供答案。他并称会替找出答案的人奖赏500元。
目前已经有分布式计算在进行验证。到2009年1月18日，已验证正整数到 5 × 2⁶⁰ = 5,764,607,523,034,234,880，也仍未有找到例外的情况。但是这并不能够证明对于任何大小的数，这猜想都能成立。
有的数学家认为，该猜想任何程度的解决都是现代数学的一大进步，将开辟全新的领域。目前也有部分数学家和数学爱好者，在进行关于“负数的3x＋1”、“5x＋1”、“7x＋1”等种种考拉兹猜想的变化形命题的研究。

Python

以下是这个猜想的Python版本代码。它会在答案得到1时停下来，以避免作0→0这个无限循环。
def collatz(number):
    while number != 1:
        if number % 2 == 0:
            number = number // 2
        elif number % 2 == 1:
            number = number*3 + 1
        print(number)collatz(int(input('輸入一個正整數')))

C语言

#include <stdio.h>void collatz(unsigned int n){
  while(n > 1){
    printf("%u\t->\t", n);
    n = n & 1 ? n * 3 + 1 : n / 2;
  }
  printf("1");}

Java

void collatz(int n){
  while(n > 1){
    System.out.print(n + "\t->\t");
    n = n % 2 == 0 ? n / 2 : n * 3 + 1;
  }
  System.out.print(1);}

Visual Basic

Imports SystemImports System.ConsolePublic Sub Collatz(ByVal n As UInteger)
    System.Console.WriteLine(n)
    If n = 1 Then Exit Sub
    n = n * 3 + 1
    Do While(n Mod 2 = 0)       // remove all trailing '0's
      n /= 2
    Loop
    Call Collatz(n)End Sub

JavaScript

function collatz(n) {
  while(n > 1)
    n = !(n % 2) ? n / 2 : n * 3 + 1;}

golang

func collatz(num int) {
    for num != 1 {
        if (num % 2) == 1 {
            num = num*3 + 1
        } else {
            num = num / 2
        }
        println(num)
    }
}