неділя, 1 листопада 2015 р.

6897

Collatz Conjecture

The Collatz conjecture which is also known as the 3n+1 conjecture is a very well known and old conjecture in mathematics. The conjecture is as follows. Take any natural number n. If n is even, divided by two to get n/2 and if n is odd number greater than 1, triple it and add one to obtain3n+1. Repeat this process to get a sequence of natural numbers known as the Hailstone sequence. The conjecture is that no matter what number you start, you always reach 1.
The hailstone sequence for n = 3 is "3105168421". Paul Erdos said "Mathematics is not yet ripe for such problems" and offered $500 for its solution. Now it ‘s time to show Erdos that the Collatz conjecture can be proved for small numbers in 11th Iran Internet Programming Contest. You are to write a program that computes the length of the Hailstone sequence for the given n.
Input
There are multiple test cases in the input. Each test case consists of a line containing a non-negative integers 0 ≤ n ≤ 100. The input terminates with "0" which should not be processed.
Output
For each test case, output the length of the Hailstone sequence in one line.
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; while((n = in.nextInt()) != 0) System.out.println(conjecture(n)); } private static int conjecture(int n) { int c = 1; while(n != 1) { n = n % 2 == 0 ? n / 2 : 3 * n + 1; c++; } return c; } }

Немає коментарів:

Дописати коментар