Mercurial > coderloop
annotate src/Collatz.java @ 0:307a81e46071 tip
initial committ
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 18 Oct 2011 01:17:49 -0700 |
parents | |
children |
rev | line source |
---|---|
rlm@0 | 1 package coderloop; |
rlm@0 | 2 |
rlm@0 | 3 import java.io.File; |
rlm@0 | 4 import java.util.Scanner; |
rlm@0 | 5 |
rlm@0 | 6 class Collatz { |
rlm@0 | 7 public static void main(String[] args)throws java.io.FileNotFoundException{ |
rlm@0 | 8 File file = new File(args[0]); |
rlm@0 | 9 Scanner scanner = new Scanner(file); |
rlm@0 | 10 int n = scanner.nextInt(); |
rlm@0 | 11 System.out.println(search_collatz(n));} |
rlm@0 | 12 |
rlm@0 | 13 public static long collatz_next(long n){ |
rlm@0 | 14 if (0 == (n % 2)){ |
rlm@0 | 15 return n/2;} |
rlm@0 | 16 else { |
rlm@0 | 17 return (1 + (n * 3));}} |
rlm@0 | 18 |
rlm@0 | 19 public static int collatz_length(int n){ |
rlm@0 | 20 long t = n; |
rlm@0 | 21 int d = 1; |
rlm@0 | 22 while (t > 1){ |
rlm@0 | 23 t = collatz_next(t); |
rlm@0 | 24 d++;} |
rlm@0 | 25 return d;} |
rlm@0 | 26 |
rlm@0 | 27 public static int search_collatz(int n){ |
rlm@0 | 28 int max = 0; |
rlm@0 | 29 int max_val = 0; |
rlm@0 | 30 int temp_val = 0; |
rlm@0 | 31 for (int i = 1; i<n; i++){ |
rlm@0 | 32 temp_val = collatz_length(i); |
rlm@0 | 33 if (temp_val > max_val){ |
rlm@0 | 34 max = i; |
rlm@0 | 35 max_val = temp_val;}} |
rlm@0 | 36 return max;} |
rlm@0 | 37 } |