back to top

Sperimentare la sequenza di Collatz in C++

Vediamo come verificare la congettura di Collatz con C++. Questo semplice script matematico consente di sperimentare la correttezza dell’assunto matematico formulato da Lothar Collatz nel 1937 secondo il quale qualsiasi numero intero al termine di una particolare sequenza di operazioni restituisce come valore finale 1.

Cos’è la Congettura di Collatz?

La Congettura di Collatz, nota anche come la Congettura di Ulam o di Syracuse, è un interessante problema matematico che riguarda una ipotetica proprietà di una sequenza di numeri interi: essa afferma che per qualsiasi numero intero positivo scelto come punto di partenza, la sequenza generata dalla seguente procedura:

  • se il numero è pari, dividere per 2
  • se il numero è dispari, moltiplicare per 3 e poi aggiungere 1

alla fine giungerà sempre a 1, indipendentemente dal punto di partenza scelto. Nonostante sia stata formulata nel 1937, la congettura di Collatz non è ancora stata provata o smentita in modo definitivo: fino ad oggi, infatti, nessuno è stato in grado di dimostrarne in modo inconfutabile la veridicità (nonostante la sua prova sul campo abbia sempre portato al risultato atteso).

Testare la Congettura di Collatz in C++

Di seguito un semplice script per testare la Congettura di Collatz su un qualsiasi numero intero (vi avviso: sino ad ora qualsiasi numero ha sempre dato 1 al termine dell’elaborazione).

#include <iostream>
using namespace std;

int main() {
  long long n;
  cout << "Inserisci un numero intero positivo: ";
  cin >> n;

  while (n != 1) {
    cout << n << " ";
    if (n % 2 == 0) {
      n = n / 2;
    } else {
      n = n * 3 + 1;
    }
  }
  cout << n << endl;
  return 0;
}

Questo codice chiede all’utente di inserire un qualsiasi numero intero positivo, quindi genera la sequenza di Collatz partendo da quel numero. La sequenza viene visualizzata a schermo e il programma termina quando il numero raggiunge 1.

E’ bene precisare che, seppur non sia stata mai smentita, teoricamente il programma potrebbe non terminare mai in quanto fino ad oggi non è stato provato che la Congettura di Collatz sia corretta.

Altri contenuti interessanti

Pubblicità
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Radice quadrata in C: vediamo come calcolarla in diversi modi

La radice quadrata è un'operazione matematica piuttosto comune (in...

Calcolare la radice quadrata con Python

In Python è possibile calcolare la radice quadrata usando...

12 film che ogni programmatore dovrebbe guardare (per trovare ispirazione e creatività)

Molti ragazzi hanno deciso di intraprendere una carriera da...

Cartonizzare una foto con Python e la libreria OpenCV

La cartoonization è una procedura grafica che consente di...

Creare flowchart (diagrammi di flusso) online: 5 strumenti gratuiti

Hai bisogno di realizzare una flow chart ma non...

Linguaggi di programmazione per bambini: giochiamo a fare Coding!

Perché insegnare la programmazione ad un bambino? L'insegnamento del...
Pubblicità