[Java] Secuencia más larga Collatz

  • 0 Respuestas
  • 2272 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hackmin

  • *
  • Underc0der
  • Mensajes: 67
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[Java] Secuencia más larga Collatz

  • en: Febrero 24, 2015, 12:35:14 pm
La siguiente secuencia iterativa se define para el conjunto de números enteros positivos:

n → n / 2 ( n es par) n → 3 n + 1 ( n es impar)

Usando la regla anterior y comenzando con 13, generamos la siguiente secuencia:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
Se puede observar que esta secuencia (a partir de 13 y terminando en 1) contiene 10 términos. Aunque no se ha probado todavía (Collatz Problema), se cree que todos los números que empiezan terminan en 1.

¿Qué número inicial, menos de un millón, produce la cadena más larga?

Ejercicio: Básico

Código: Java
  1. public static void main(You are not allowed to view links. Register or Login[] args) {
  2.  
  3.     Scanner cin = new Scanner(You are not allowed to view links. Register or Login.in);
  4.    long finish = 9999;
  5.     long GetPrimo = cin.nextLong();
  6.     long GetNumero = 0;
  7.     long DividirPar = 0;
  8.     long MultiplicarImpar = 0;
  9.     long Contador = 1;
  10.     long Comparar = 0;
  11.        for(long i = 1; i < GetPrimo;i++){
  12.           DividirPar = i;
  13.          MultiplicarImpar = i;
  14.           for(long x = 1; x < finish;x++){
  15.              
  16.              if(DividirPar % 2 == 0){
  17.                 DividirPar =  DividirPar / 2;
  18.                 MultiplicarImpar = DividirPar;
  19.                 Contador = Contador + 1;
  20.                 continue;
  21.              }
  22.               if(DividirPar == 1 && x > 1){
  23.                  
  24.                   if(Contador > Comparar){
  25.                      GetNumero = i;
  26.                      Comparar = Contador;
  27.                  
  28.                      
  29.                   }
  30.                   Contador = 1;
  31.                  x = 99999;
  32.                  continue;
  33.               }
  34.              
  35.              if(MultiplicarImpar % 2 != 0){
  36.                
  37.                
  38.                 MultiplicarImpar = (MultiplicarImpar * 3) + 1;
  39.                 DividirPar = MultiplicarImpar;
  40.                 Contador = Contador + 1;
  41.                 continue;
  42.              }
  43.              
  44.              
  45.              
  46.              
  47.              
  48.              
  49.           }
  50.          
  51.      
  52.        }
  53.        You are not allowed to view links. Register or Login.out.println("El número: "+GetNumero+" Genera un total de: "+Comparar);
  54.        }
  55.     }  

Salida del programa, haciendo menor que 1.000.000:

Código: You are not allowed to view links. Register or Login
El número: 837799 Genera un total de: 525
« Última modificación: Febrero 24, 2015, 01:16:30 pm por Expermicid »

 

[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 3907
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 4234
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Cheat-Sheet: JAVA - Hoja Guía para que no se me olvide

Iniciado por Denisse

Respuestas: 1
Vistas: 602
Último mensaje Julio 21, 2020, 12:43:49 pm
por DevCode
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 9803
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Sobreescritura y SobreCarga de Métodos en Java ( Overriding y Overloading )

Iniciado por Expermicid

Respuestas: 0
Vistas: 2209
Último mensaje Noviembre 02, 2014, 05:02:04 pm
por Expermicid