



|
|
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
$
*/
|
|
|