【JAVA】java递归测试考拉兹猜想/冰雹猜想
生活随笔
收集整理的這篇文章主要介紹了
【JAVA】java递归测试考拉兹猜想/冰雹猜想
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
java遞歸測試考拉茲猜想/冰雹猜想
什么是考拉茲猜想:
考拉茲猜想是數(shù)學中最引人注目的難題之一,它也被稱為奇偶歸一猜想、3n+1猜想、冰雹猜想還有角谷猜想等等。這個猜想的很容易掌握,你只需要知道如何加1,如何除以2,以及何乘以3就行了。
然而,這般的簡單性卻與證明猜想本身的難度形成了鮮明的對比。著名數(shù)學家保羅·埃爾德什(Paul Erd?s)曾說:“數(shù)學還沒有做好準備面對這樣的問題。”
運算規(guī)律
考拉茲猜想運算規(guī)律十分簡單,首先,取一個任意正整數(shù),根據(jù)以下規(guī)則進行運算:
- 若數(shù)字為偶數(shù),則將其除以2;
- 若數(shù)字為奇數(shù),則讓其乘以3,再加1,再除以2;
代碼示例
public class KaoLaZi {public static void main(String[] args) {int n=2100000000; //n為隨機值的最大值int num=(int) (Math.random()*n); //取n范圍內(nèi)的隨機正整數(shù),Math.random()取0~1之間的隨機值Ou a=new Ou(); //創(chuàng)建對象long jiNum=0;a.Ou(num,jiNum); //調(diào)用方法,傳參} } class Ou{public void Ou(int num,long jiNum) { //構(gòu)造方法/** 如果能被二整除,就除以二* */if (num%2==0) {if (num<0) {num=-num;}num/=2;System.out.println(num);jiNum++;Ou(num,jiNum);//回調(diào)方法} /** 如果是一,則停止運行* */else if(num==1) {System.out.println("共執(zhí)行:"+jiNum+"次");}/** 不能被2整除就乘3+1* */else {if (num<0) {num=-num;}num=num*3+1;System.out.println(num);jiNum++;Ou(num,jiNum); //回調(diào)方法}} }//在以上代碼中,我的數(shù)是取到了int的最大值:21億;
//我的測試是在10億范圍經(jīng)過考拉茲猜想的規(guī)則所有數(shù)都是回到了1;
//測試完畢,代碼寫的可能有些沒那么好,還請各位大佬多多指點
總結(jié)
以上是生活随笔為你收集整理的【JAVA】java递归测试考拉兹猜想/冰雹猜想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML基础二
- 下一篇: 蓝桥杯单片机决赛(国赛)第十一届题目加代