Congettura di Collatz

collatzLa congettura (probabilmente vera ma non ancora dimostrata) afferma che se si applica ripetutamente la formula

collatz

si giunge sempre al valore 1, indipendentemente dal valore di partenza (Wikipedia: Congettura di Collatz).

Ecco la sequenza che comincia da 17

n Pari/Dispari Calcolo
17 dispari 3*17+1
52 pari 52/2
26 pari 26/2
13 dispari 3*13+1
40 pari 40/2
20 pari 20/2
10 pari 10/2
5 dispari 3*5+1
16 pari 16/2
8 pari 8/2
4 pari 4/2
2 pari 2/2
1 STOP

In tutti i casi quando si arriva al valore 1 si interrompe l’esecuzione, altrimenti la sequenza continuerebbe per sempre come 4 – 2 – 1 – 4 – 2 – 1 – …

Program Collatz;
Var
   n: LongInt;
Begin
   ReadLn(n);
   Repeat
      If(n mod 2 = 0) Then
         n:=n Div 2
      Else
         n:=3*n+1;
      Write(n, ' ');
   Until(n = 1);
   ReadLn;
End.

Il ciclo Repeat...Until ripete l’esecuzione se l’espressione logica è falsa.