zoukankan      html  css  js  c++  java
  • 20175234 2018-2019-2 个人项目:数字黑洞(二):冰雹猜想

    定义

    冰雹猜想是指,一个自然数x,如果是奇数就乘以3再加1,如果是偶数就析出偶数因数2ⁿ,这样经过若干个次数,最终回到1。

    适用条件

    在小于7*10^11的所有的自然数。

    伪代码

    (一)输入N
    (二)递归调用
        while(N!=1){
        if(N为偶数)
        while(N%2==0){
        N=n/2;
        }
        Else
        N=n*3+1;
        }
    (三)退出循环则验证成功
    

    产品代码

    package 冰雹猜想;
    import java.util.Scanner;
    public class Collatz {
        public static void main(String[] args) {
            int x = 0;
            do {
                System.out.println("请输入一个自然数");
                Scanner reader = new Scanner(System.in);
                x = reader.nextInt();
            } while (x <= 0 || x > 7 * Math.pow(10, 11));
    
            dispose a = new dispose();
            a.dispose(x);
    
        }
    }
    
    package 冰雹猜想;
    
    public class dispose {
        public int dispose(int x) {
    
            int i = 0;
            while (x != 1) {
                if (x % 2 == 0) {
                    while (x % 2 == 0) {
                        x = x / 2;
                    }
                } else {
                    x = x * 3 + 1;
                }
                i++;
                System.out.println(+i + "次运行后结果为" + x);
            }
            System.out.println("已验证");
            return  x;
        }
    }
    
    

    测试代码

    package Collatz;
    
    import Collatz.dispose;
    import junit.framework.TestCase;
    
    public class disposeTest extends TestCase {
        dispose d=new dispose();
        public void testDispose() {
            assertEquals(1,d.dispose(1));//边界
            assertEquals(1,d.dispose(24));//偶数
            assertEquals(1,d.dispose(27));//奇数,强悍的27验证
            assertEquals(1,d.dispose(7 * (int)Math.pow(10, 10)));//较大数据验证
        }
    }
    

    测试截图

    码云链接

    参考资料

  • 相关阅读:
    透过书本了解HTML5
    Seam性能讨论
    Maven依赖管理
    Tapestry
    为HTML5的未来制定学习计划
    后缀数组
    HDU 1042(大数)
    教你理解复杂的C/C++声明
    编程修养
    平衡二叉树
  • 原文地址:https://www.cnblogs.com/ysz-123/p/10753351.html
Copyright © 2011-2022 走看看