



|
|
CS1 Course 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.
JavaApplication --
Collatz
// General Information
// ---------------------------------------------------
// File: CollatzApp.java
// Type: java application file
// Date: Wed Sep 6, 2000
// Name: Craig Graci
// Line: Generate a Collatz sequence
// Application Description
// ---------------------------------------------------
/*
Read a postitive integer.
Generate the corresponding Collatz sequence.
*/
// 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 52 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 395 1186 593 1780 890 445 1336 668 33+
4 167 502 251 754 377 1132 566 283 850 425 1276 638 319 95+
8 471 438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822+
911 2734 1367 4102 2051
6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 32+
5 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 2+
0 10 5 16 8 4 2 1
$
*/
|
|
|