La congettura (probabilmente vera ma non ancora dimostrata) afferma che se si applica ripetutamente la formula seguente si giunge sempre al valore 1, indipendentemente dal valore di partenza (Wikipedia: Congettura di Collatz)

Ecco la sequenza che comincia da 17
Quando si arriva al valore 1 si interrompe l’esecuzione altrimenti si continuerebbe per sempre con 4 – 2 – 1 – 4 – 2 – 1 – …
Codice
1 2 3 4 5 6 7 8 9 10 |
TextWindow.Write("n = ") n=TextWindow.ReadNumber() While(n <> 1) If(Math.Remainder(n,2) = 0) Then n=n/2 Else n=3*n+1 EndIf EndWhile TextWindow.WriteLine("Finito!") |
Note
- Se Math.Remainder(n, 2) = 0 allora n è pari
- Se il ciclo While termina per ogni n allora la congettura è vera…
Aggiungi dei messaggi a schermo per evidenziare i passi del ciclo While
1 2 3 4 5 6 7 8 9 10 11 |
TextWindow.Write("n = ") n=TextWindow.ReadNumber() While(n <> 1) TextWindow.Write(n + " -> ") If(Math.Remainder(n,2) = 0) Then n=n/2 Else n=3*n+1 EndIf TextWindow.WriteLine(n) EndWhile |