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)));//较大数据验证
        }
    }
    

    测试截图

    码云链接

    参考资料

  • 相关阅读:
    1372
    SPOJ
    HDU 3966-Aragorn's Story 树链剖分+树状数组
    LightOJ 1348
    HihoCoder 1568 不一定合法括号序列
    LightOJ 1343
    LightOJ 1266
    LightOJ 1112
    HihoCoder 1328 BFS 搜索
    链表交集、合并、排序
  • 原文地址:https://www.cnblogs.com/ysz-123/p/10753351.html
Copyright © 2011-2022 走看看