//-----------------------------------------------------------------
// CICLE d'un nombre enter. L'algoritme 3n+1
//
// Joan Aranès Clua
// data: 17/12/2001
//
// Aquest programa calcula el "cicle" d'un nombre n
// el qual es calcula de la manera següent:
// 1. s'entra n
// 2. es mostra n
// 3. si n =1
// 4. aleshores ACABA EL PROGRAMA
// 5. si n es senar aleshores n:=3n+1
// 6. en cas contrari, és a dir, si n és parell, aleshores n:=n/2
// 7. tornar a la línia 2
//---------------------------------------------------------------------
// exemple 1. cicle(22) = {22, 11, 34, 17, 52, 26, 13,
40, 20, 10, 5, 16, 8, 4, 2, 1}
// es tracta d'un cicle de longitud 16
// --------------------------------------------------------------------
// EXEMPLES AMB POTÈNCIES DE ^2: 2^x
// exemple 2. cicle(32) = {32, 16, 8, 4, 2, 1}
// exemple 3. cicle(64) = {64, 32, 16, 8, 4, 2, 1}
// ...
// exemple 4. cicle(1024) = {1025, 512, 256, 128,
64, 32, 16, 8, 4, 2, 1}
// ...
// Cal observar que:
// 1r Efectivament, les longituds dels cicles de les potències de 2
són relativament curtes
// 2n longitud_del_cicle(2^x) = x+1
//-----------------------------------------------------------------
#include <stdio.h> //printf i scanf
#include <stdlib.h> //system() .. per a la f. cls
void main()
{
int n; // variable corresponent a la dada d'entrada
int m; // variable auxiliar
int longitud; // variable per mesurar la longitud del cicle
system("cls"); //esborra la pantalla
// entrada dels coeficients
printf("\nintrodu\x08Bu un nombre enter:\n");
printf("n=");
scanf("%d",&n);
printf("\ncicle(%d)=",n);
m=n;
longitud=1;
while (m>1)
{
printf("%d ",m);
if ((m%2)!=0)
m=3*m+1;
else
m=m/2;
longitud=longitud+1;
}
printf("%d ",m);
printf("\nlongitud del cicle(%d)=%d",n,longitud);
printf("\n\n");
}
Mostrando entradas con la etiqueta conjetura de Collatz. Mostrar todas las entradas
Mostrando entradas con la etiqueta conjetura de Collatz. Mostrar todas las entradas
viernes, 1 de octubre de 2021
El algoritmo 3n+1. Conjetura de Collatz. Un ejercicio de programación en C/C++
Etiquetas:
3n+1,
C,
C/C++,
conjetura de Collatz
jueves, 29 de abril de 2021
La conjetura de Collatz ( o c. "3n+1" )
El problema 3n+1 consiste en estudiar el comportamiento de una sucesión de números naturales que empezando por un número natural cualquiera se obtiene a continuación el número 3n+1 si n es impar o bien n/2 si n es par. La conjetura 3n+1 nos dice que empezando con cualquier número natural n y construyendo dicha sucesión, siempre se llega al número 1.
No se ha probado aún dicha conjetura, si bien se ha llegado a demostrar es cierta para números menores o iguales que 16172831301712733 ( abril de 2021 ).
Referencias:
  [1] https://es.wikipedia.org/wiki/Conjetura_de_Collatz, Wikipedia
No se ha probado aún dicha conjetura, si bien se ha llegado a demostrar es cierta para números menores o iguales que 16172831301712733 ( abril de 2021 ).
Referencias:
  [1] https://es.wikipedia.org/wiki/Conjetura_de_Collatz, Wikipedia
Etiquetas:
algoritmos,
conjetura de Collatz,
teoría de números
Suscribirse a:
Entradas (Atom)