P Dunn's Super CS1 Site

CS1 at Oswego

Hypertexknowlogy

Frequently Asked Questions

 
P Dunn's Super CS1 Site  
 
 
Programming Challenge Archive

Program Potpouri
Collatz Sequences
 
The program below was featured in the Lab which was devoted operational aspects of Java Application programming with templates in the context of the ``blue'' packages.  

 
  Java Application  -- Collatz

   // General Information
   // ---------------------------------------------------
  
   // File:  CollatzApp.java
   // Type:  java application file
   // Date:  Wed Sep  6, 2000
   // Name:  Patrick Dunn
   // Line:  An app to calculate numbers until 1 is reached
  
   // Application Description
   // ---------------------------------------------------
  
   /*
      This application will take a number and if it is
      odd calculate it times 3 and add 1 and use that number
      in the next calculation.
  
      If the number is even it will then divide it by 2
      and use that number for the next calculation
  
   */
  
   // Required Packages
   // ---------------------------------------------------
  
      import blue.io.*;
      import blue.math.*;   
  
   // Application Class
   // ---------------------------------------------------
  
      class CollatzApp
      {
         static public void main (String args[])
         {
     // Prompt for the input
     IO.print("The positive integer? ");
  
     // Read the input
     int a = IO.read_int();
  
     // Display the sequence
     while(true)
         {
     IO.print (a + "  ");
     if(a==1)
         {
     break;
         }
     if(Predicates.odd(a))
         {
     a = ((3*a)+1);
     continue;
         }
     if(Predicates.even(a))
         {
     a = (a/2);
     continue;
         }
  
         }
     IO.println();
     IO.println();
         }
      }
  
   // Demo
   // ---------------------------------------------------
  
   /*
   $ javac CollatzApp.java
   $ java CollatzApp
   The positive integer? 1
   1  
  
   $ java CollatzApp
   The positive integer? 10
   10  5  16  8  4  2  1  
  
   $ java CollatzApp
   The positive integer? 100
   100  50  25  76  38  19  58  29  88  44  22  11  34  17  5+
   2  26  13  40  20  10  5  16  8  4  2  1  
  
   $ java CollatzApp
   The positive integer? 1000
   1000  500  250  125  376  188  94  47  142  71  214  107  +
   322  161  484  242  121  364  182  91  274  137  412  206 +
    103  310  155  466  233  700  350  175  526  263  790  39+
   5  1186  593  1780  890  445  1336  668  334  167  502  25+
   1  754  377  1132  566  283  850  425  1276  638  319  958+
     479  1438  719  2158  1079  3238  1619  4858  2429  7288+
     3644  1822  911  2734  1367  4102  2051  6154  3077  923+
   2  4616  2308  1154  577  1732  866  433  1300  650  325  +
   976  488  244  122  61  184  92  46  23  70  35  106  53  +
   160  80  40  20  10  5  16  8  4  2  1  
  
   $ 
   */
  
   /* 
   $ java CollatzApp
   The positive integer? 10
   10  5  16  8  4  2  1  
  
   $ 
  
   */