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 }