码迷,mamicode.com
首页 > 其他好文 > 详细

【练习】克拉兹问题

时间:2015-04-08 23:01:06      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:

3n+1问题是一个简单有趣而又没有解决的数学问题。这个问题是由Collatz在1937年提出的。克拉兹问题(Collatz problem)也被叫做hailstone问题、3n+1问题、Hasse算法问题、Kakutani算法问题、Thwaites猜想或者Ulam问题。
问题如下:
(1)输入一个正整数n;
(2)如果n=1则结束;
(3)如果n是奇数,则n变为3n+1,否则n变为n/2;
(4)转入第(2)步。
克拉兹问题的特殊之处在于:尽管很容易将这个问题讲清楚,但直到今天仍不能保证这个问题的算法对所有可能的输入都有效——即至今没有人证明对所有的正整数该过程都终止。
例如:n=9时,有 9  28  14  7  22  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1
 
public class Collatz {
    /**
     * Collatz问题
     * @param number
     */
    public static void CollatzQ(int number){    
        String  result = "";
        int tmp = number;
        while(true){
            if(tmp == 1){
                result = result + "Over";
                System.out.println(result);
                break;
            } else if (tmp <= 0){
                System.out.println("The number is error!!!");
                break;
            } else {
                 if (tmp % 2 == 0){
                     tmp = tmp/2;
                 }else {
                     tmp = 3 * tmp + 1;
                 }
                 result = result + tmp + "\t";
            }
        }
        
    }
    
    public static void main(String[] args) {
        for(int num = 0; num < 10; num++){
            Collatz.CollatzQ(num);
        }
    }
}

 

The number is error!!!
Over
1    Over
10    5    16    8    4    2    1    Over
2    1    Over
16    8    4    2    1    Over
3    10    5    16    8    4    2    1    Over
22    11    34    17    52    26    13    40    20    10    5    16    8    4    2    1    Over
4    2    1    Over
28    14    7    22    11    34    17    52    26    13    40    20    10    5    16    8    4    2    1    Over
 

【练习】克拉兹问题

标签:

原文地址:http://www.cnblogs.com/yunkong/p/4403913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!