1. 程式人生 > >PAT乙級1001 害死人不償命的(3n+1)猜想 (java)

PAT乙級1001 害死人不償命的(3n+1)猜想 (java)

卡拉茲(Callatz)猜想:

  • 對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。

輸入

每個測試輸入包含1個測試用例,給出一個不超過1000的自然數n的值。

輸出

輸出從n計算到1需要的步數。

輸入樣例

3

輸出樣例

5

原始碼

import java.util.Scanner;
public class Main{
  public static void main(String[] args)
  {
    Scanner in = new
Scanner(System.in); int num = in.nextInt(); int count = 0; if(num <= 1000) { while(num !=1) { if(num % 2 == 0) { num = num/2; count++; } else { num = (num * 3 + 1)/2; count++; } } } System.out.print(count); } }

注意事項

  • 這裡無需對輸入的數進行範圍限制,測試點都小於等於1000,加上也無錯