【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;


//測試完畢,代碼寫的可能有些沒那麼好,還請各位大佬多多指點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章