



|
|
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: Fri Sep 8, 2000
// Name: James W. Bremenour
// Line: Makes a Collatz sequence
// Application Description
// ---------------------------------------------------
/*
Determines how to calculate a positive integer,
suplied by the user, depending on the integer being
even or odd.
*/
// Required Packages
// ---------------------------------------------------
import blue.io.*;
import blue.math.*;
// Application Class
// ---------------------------------------------------
class CollatzApp
{
static public void main (String args[])
{
//Prompt for the input.
IO.print ("Enter a 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
// ---------------------------------------------------
/*
$ java CollatzApp
Enter a positive integer? 1
1
$ java CollatzApp
Enter a positive integer? 10
10 5 16 8 4 2 1
$ java CollatzApp
Enter a 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
Enter a 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 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 182+
2 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 57+
7 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 2+
3 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
$
*/
|
|
|