【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基础二
- 下一篇: 蓝桥杯单片机决赛(国赛)第十一届题目加代