【JAVA】java递归测试考拉兹猜想/冰雹猜想
生活随笔
收集整理的这篇文章主要介绍了
【JAVA】java递归测试考拉兹猜想/冰雹猜想
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
java递归测试考拉兹猜想/冰雹猜想
什么是考拉兹猜想:
考拉兹猜想是数学中最引人注目的难题之一,它也被称为奇偶归一猜想、3n+1猜想、冰雹猜想还有角谷猜想等等。这个猜想的很容易掌握,你只需要知道如何加1,如何除以2,以及何乘以3就行了。
然而,这般的简单性却与证明猜想本身的难度形成了鲜明的对比。著名数学家保罗·埃尔德什(Paul Erdös)曾说:“数学还没有做好准备面对这样的问题。”
运算规律
考拉兹猜想运算规律十分简单,首先,取一个任意正整数,根据以下规则进行运算:
- 若数字为偶数,则将其除以2;
- 若数字为奇数,则让其乘以3,再加1,再除以2;
代码示例
public class KaoLaZi {public static void main(String[] args) {int n=2100000000; //n为随机值的最大值int num=(int) (Math.random()*n); //取n范围内的随机正整数,Math.random()取0~1之间的随机值Ou a=new Ou(); //创建对象long jiNum=0;a.Ou(num,jiNum); //调用方法,传参} } class Ou{public void Ou(int num,long jiNum) { //构造方法/** 如果能被二整除,就除以二* */if (num%2==0) {if (num<0) {num=-num;}num/=2;System.out.println(num);jiNum++;Ou(num,jiNum);//回调方法} /** 如果是一,则停止运行* */else if(num==1) {System.out.println("共执行:"+jiNum+"次");}/** 不能被2整除就乘3+1* */else {if (num<0) {num=-num;}num=num*3+1;System.out.println(num);jiNum++;Ou(num,jiNum); //回调方法}} }//在以上代码中,我的数是取到了int的最大值:21亿;
//我的测试是在10亿范围经过考拉兹猜想的规则所有数都是回到了1;
//测试完毕,代码写的可能有些没那么好,还请各位大佬多多指点
总结
以上是生活随笔为你收集整理的【JAVA】java递归测试考拉兹猜想/冰雹猜想的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: HTML基础二
- 下一篇: 蓝桥杯单片机决赛(国赛)第十一届题目加代