domingo, 5 de junio de 2016

Como calcular la secuencia collatz en C, Java, Python, Small Basic

Diario de un programador. Anexo B: Códigos


Secuencia Collatz: Programa que calcula la secuencia Collatz. 
La secuencia de Collatz de un número entero se construye de la siguiente forma:
  • si el número es par, se lo divide por dos;
  • si es impar, se le multiplica tres y se le suma uno;
  • la sucesión termina al llegar a uno.
La conjetura de Collatz afirma que, al partir desde cualquier número, la secuencia siempre llegará a 1. A pesar de ser una afirmación a simple vista muy simple, no se ha podido demostrar si es cierta o no.

C
Programa utilizado: Code Blocks 13.12


#include<stdio.h>

int main(void){

  int numero;

  printf("Ingresa un numero: ");
  scanf("%d", &numero);

  while(numero != 1){
    if(numero % 2 == 0){
      printf("%d,", numero);
      numero = numero / 2;
    }//fin if
    else{
      printf("%d,", numero);
      numero = (numero * 3) + 1;
    }//fin else
    if(numero == 1){
      printf("1\n");
    }//fin if
  }//fin while
return 0;
}
//Escrito por Gustavo J. Cerda Nilo, diciembre 2015


JAVA
Programa utilizado: Net Beans 8.0.1

import java.util.Scanner;
public class collatz {
  public static void main(String[]args){
   
    Scanner ingreso = new Scanner(System.in);
    int numero;
    System.out.print("Ingresa un numero: ");
    numero = ingreso.nextInt();
   
    while(numero != 1){
      if(numero % 2 == 0){
        System.out.print(numero + ","); 
        numero = numero / 2; 
      }//fin if
      else{
        System.out.print(numero + ",");
        numero = (numero * 3) + 1;
      }//fin else
      if(numero == 1){
        System.out.println("1"); 
      }//fin if
    }//fin while
  }   
}
//Escrito por Gustavo J. Cerda Nilo, diciembre 2015


PYTHON 3.5
Programa utilizado: Idle

numero = int(input("Ingresa un numero: "))

while numero != 1:
    if numero % 2 == 0:
        print("%d," % (numero), end = "")
        numero = numero / 2
    else:
        print("%d," % (numero), end = "")
        numero = (numero * 3) + 1

    if numero == 1:
        print("1")
#Escrito por Gustavo J. Cerda Nilo, diciembre 2015


SMALL BASIC
Programa utilizado: Small Basic 1.1

TextWindow.WriteLine("Secuencia Collatz")
TextWindow.Write("Ingresa numero: ")
numero = TextWindow.ReadNumber()
While numero <> 1
  If Math.Remainder(numero,2) = 0 Then
    TextWindow.Write(numero + ",")
    numero = numero / 2
  Else
    TextWindow.Write(numero + ",")
    numero = (numero * 3) + 1
  EndIf
  If numero = 1 Then
    TextWindow.WriteLine("1")
  EndIf
EndWhile

'Escrito por Gustavo J. Cerda Nilo, Noviembre 2015


7 comentarios:

  1. necesito ese código pero en el lenguaje de QB64
    no lo tienen?

    ResponderEliminar
  2. a que se refiere el linea 12 en python
    con print("%d," % (numero), end = "")
    que es la d?

    ResponderEliminar
    Respuestas
    1. Saludos. la "d" es un modificador de formato, quiere decir "aqui hay que colocar un número"
      En este enlace hay algunos ejemplos de como utilizar los modificadores de formato:

      http://codigogx.blogspot.cl/2016/05/capitulo-25-variables-en-python.html

      saludos

      Eliminar
  3. Mejor programa para crear el árbol para todos los números desde el 2 hasta el 50 por ejemplo, el 27 sale algo más largo

    ResponderEliminar
  4. Excelente código en java crack, saludos desde León Guanajuato.

    ResponderEliminar

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...