Being a natural number greater than zero. Consider this algorithm:
If , stop.
If is an even number, divide it by 2.
If is an odd number, multiply it by 3 and add 1.
For instance, starting with 6 we obtain .
The conjecture says that starting with any natural number , it always arrives to 1. Although it has not still been proved, using computers we know that is true for numbers .
Your task is to write a program that reads two natural numbers and and prints which natural numbers between 1 and arrive to 1 in or more steps. It must print also which is the greatest number contained in their steps.
Your program must implement and use the procedure
void converge(int n, int& k, int& far);
that, given an integer strictly positive |n|, stores at the parameter |k| the number of steps that needs |n| to arrive to 1, and at the parameter |far| the greatest number seen in the process. For instance, |converge(6, k, far);| stores an 8 at |k| and a 16 at |far|. Similarly, |converge(4, k, far);| stores a 2 at |k| and a 4 at |far|, and |converge(1, k, far);| stores a 0 at |k| and an 1 at |far|.
The input is two natural numbers and , with .
Your program must print all the numbers between 1 and that arrive to in or more steps, one per line. Besides, print also the greatest produced number, following the format of the instances.
Input
6 7
Output
3 6 The greatest reached number is 16.
Input
16 0
Output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 The greatest reached number is 160.
Input
1 0
Output
1 The greatest reached number is 1.
Input
2 1
Output
2 The greatest reached number is 2.
Input
30 200
Output
The greatest reached number is 9232.
Input
50000 323
Output
35655 The greatest reached number is 121012864.
Input
447 140
Output
327 The greatest reached number is 39364.