Programando 👨‍💻 un algoritmo para contradecir la conjetura de Collatz

Programo con TypeScript un algoritmo para encontrar un número que desmonte la conjetura de Collatz

19.11.2022 a las 22:45

Programando 👨‍💻 un algoritmo para contradecir la conjetura de Collatz

⚫ ¿Qué es la conjetura de Collatz?

🟣 Probando Collatz con un número par

🟣 Probando Collatz con un número impar

⚫ Prueba a encontrar un número que rebata la conjetura de Collatz

⚫ Programando 👨‍💻 el algoritmo

Programando 👨‍💻 un algoritmo para contradecir la conjetura de Collatz

¿Qué es la conjetura de Collatz?

La conjetura de Collatz dice que elijas el número natural que eligas siempre llegarás a 1 siguiendo estas dos fáciles reglas:

  • Si el número elegido es par lo divides entre dos.
  • Si el número elegido es impar lo multiplicas por 3 y le sumas 1

Al resultado obtenido le vuelves a aplicar las mismas reglas y al final llegarás a un blucle infinto de 4, 2, 1, 4, 2, 1...


¿No me crees? Veamos

Probando la conjetura de Collatz con un número par

Elegimos el 16, que es par, entonces dividimos entre 2

16/2=8

Obtenemos 8 que es par, dividimos entre 2

8/2=4

Obtenemos 4 que es par, dividimos entre 2

4/2=2

Obtenemos 2 que es par, dividimos entre 2

2/1=1

Obtenemos 1 que es impar, multimplicamos por tres y sumamos 1

1*3+1=4

Obtenemos 4 que es par, dividimos entre 2

4/2=2

Obtenemos 2 que es par, dividimos entre 2

2/1=1

... ¿ves el blucle?

Probando la conjetura de Collatz con un número impar

Elegimos el 5

Es impar, multimplicamos por tres y sumamos 1

5*3+1=16

Obtenemos 16 que es par, dividimos entre 2

16/2=8

Obtenemos 8 que es par, dividimos entre 2

8/2=4

Obtenemos 4 que es par, dividimos entre 2

4/2=2

Obtenemos 2 que es par, dividimos entre 2

2/1=1

... de nuevo el bucle 🤯

Prueba a encontrar un número que rebata la conjetura de Collatz

A continuación puedes probar a introducir cualquier número natural en la caja y lo meteré en un algoritmo para presentarte el resultado de aplicarle las reglas de la conjetura de Collatz:


Esperando número natural

Te cuento, que hasta la fecha se han probado todos los números hasta el 5.764 por 10 elevado a 18, es decir, más de 5 trillones y todos y cada uno verifican la conjetura 🤯

Programando 👨‍💻 el algoritmo

Este algoritmo está pidiendo recuersividad a voces.


Si me sueles leer sabes que me encanta aplicar recursividad, si no sabes lo que es te lo explico aquí 👇

¿Qué es la recursividad?

Comprende de una vez qué es la recursividad

Al turrón...

  
getCollatz(myNumber:number, myArray:number[]=[]): number[]{
    myArray.push(myNumber);
    if(myNumber===1)  return myArray;        
    if(myNumber%2===0){        
        return this.getCollatz(myNumber/2, myArray);
    }
    return this.getCollatz(myNumber*3+1,myArray);
}
  

Hasta luego 🖖

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.1.2