這是一個知識+的問題
輸入兩個數例如20 10
印出n
如果n=1結束
如果n是奇數 那麼 n=3*n+1
否則n=n/2
所以10會從10一直跑到1為止才會停
然後10-20之間的數每一個都要這樣做
並紀錄n的值 不能重複(所以我用TreeSet,自動排序 又不會重複)
========================下面為印出結果
========================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());
}
}
留言列表