這是一個知識+的問題

輸入兩個數例如20 10

印出n

如果n=1結束

如果n是奇數 那麼 n=3*n+1

否則n=n/2

所以10會從10一直跑到1為止才會停

然後10-20之間的數每一個都要這樣做

並紀錄n的值 不能重複(所以我用TreeSet,自動排序 又不會重複)

========================下面為印出結果 

The 3h+1 problem  

========================code

import java.util.Collections;
import java.util.Scanner;
import java.util.TreeSet;

public class problem {


public static void main(String[] args) {
Scanner s=new Scanner(System.in);//NEW 一個Scanner物件
int max=s.nextInt();//宣告一個int型別的max變數來存放輸入的測資,測資必須小於1,000,000
int min=s.nextInt();//宣告一個int型別的min變數來存放輸入的測資,測資必須大於0否則無限迴圈
int itemCount;
TreeSet al=new TreeSet();
for(itemCount=min;itemCount<=max;itemCount++){
min=itemCount;
int count=0;//計數器
while(1<2){//如果沒有break則迴圈無限循環;
System.out.print("n="+min+",");//印出n的值
if(min==1){//如果n=1,count+1然後break
count++;
al.add(min);
break;
}else if(min%2!=0){//n不能被2整除則n=3*n+1
min=3*min+1;
}else{//除此之外(n如果被>0則為奇數)n=n/2
min=min/2;
}
al.add(min);
count++;//最後count+1
}
System.out.println("跑的次數為:"+count);//印出跑的次數


}

System.out.println(al);
System.out.println("總數為:"+al.size());
}

}


arrow
arrow
    全站熱搜

    cookiesp 發表在 痞客邦 留言(0) 人氣()