Algoritmo para determinar si un número es Cíclico - Parte 1


Hola Hackers, geeks, programadores e informáticos. Hoy les traigo un nuevo artículo en el cual les mostraré un algoritmo sencillo para determinar si un número es Cíclico.
Antes de comenzar será necesario explicar que es un número cíclico. Son un tipo de números que presentan la siguiente característica: si multiplicamos este número por 1, 2, 3, ... , n (n representa la cantidad de dígitos que tiene este número) obtendremos en cada iteración el mismo número pero con sus dígitos cambiados, este cambio tiene la particularidad de hacerlo como si fuera un círculo, es decir, el último dígito pasa a ser el primero y así sucesivamente. Por ejemplo el número 142857:


Como podemos observar el número resultante de cada multiplicación es un número pero con los dígitos del número inicial en un nuevo orden. Dicho de otra manera, cada dígito solo se recorrió de su posición original.
Existe un fórmula para calcular números cíclicos pero de ella hablaremos en otro artículo. Ahora si pasemos al algoritmo:

1. Recibiremos como parámetro un número cualquiera y lo almacenaremos como String. Esto porque hay números cíclicos que tienen como dígito inicial un cero y si utilizamos un tipo de dato numérico se eliminará el cero inicial.
2. Iteramos sobre el número de dígitos del número comenzando por uno.
3. El número ingresado lo multiplicaremos por la variable con la que estemos iterando, para esto el número ingresado debe ser convertido a entero.
4. Verificaremos que el número de digitos de la cifra resultante sea igual que el de el número inicial, en caso contrario agregaremos los ceros que sean necesarios al inicio.
5. Buscaremos en que posición se encuentra el primer dígito del número ingresado en el número nuevo. De no encontrarlo el número ya no es cíclico.
6. Por último iteraremos sobre el nuevo número y compararemos que cada dígito de ambos números se encuentren en el mismo orden.

Ya para terminar les dejo el código escrito en Python del algoritmo anterior.

Este algoritmo puede llegar a ser ineficiente con números muy grandes, por esa razón más adelante les enseñaré un algoritmo más corto.
Cualquier duda o sugerencia puedes enviarme mensaje a mi correo wizardprogrammer.py@gmail.com

Comentarios

Entradas populares