logo

Número mágico en Java

En programación, un número mágico es un valor numérico que se utiliza directamente en el código. Se utiliza con fines de identificación. En esta sección, discutiremos ¿Qué es un número mágico? y ¿Cómo podemos encontrar un número mágico a través de un programa Java?

Número mágico en programación

A número mágico es un valor numérico codificado (valor de texto en algunos casos) en el código que puede cambiar en una etapa posterior. Parece arbitrario y no tiene contexto ni significado. Cuesta actualizar. Por ejemplo:

 const num = 74; //where 2 is hard-coded const number = num / 2; //it should be properly defined 

El uso de dicha constante puede ayudarnos a distinguir los archivos entre muchos otros formatos de archivo. Por ejemplo:

  • Los archivos PDF comienzan con el texto mágico %PDF -> Hex (25 50 44 46)
  • Los archivos PNG comienzan con el texto mágico %PNG -> Hex (25 50 4E 47)

¿Por qué se deben evitar los números mágicos?

No debemos usar los números mágicos en programación porque conducen a un antipatrón que hace que el código sea difícil de entender y mantener. También oculta la intención por lo que se debe evitar el uso de números mágicos. Los cambios en el código también son más duros.

cadena.valorde

Se recomienda utilizar constantes para representar valores en lugar de utilizar números mágicos. Mejora la legibilidad del código y proporciona una fácil modificación en el código.

Número mágico en matemáticas

En matemáticas, si la suma de sus dígitos recursivamente se calcula hasta un solo dígito. Si el dígito es 1 entonces el número se llama número mágico . Es bastante similar al numero feliz .

Por ejemplo, 325 es un número mágico porque la suma de sus dígitos (3+2+5) es 10, y nuevamente sumamos el resultante (1+0), obtenemos un solo dígito (1) como resultado. Por tanto, el número 325 es un número mágico.

Algunos otros números mágicos son 1234, 226, 10, 1, 37, 46, 55, 73, etc. .

cadena java cmp

Tenga en cuenta que si un número es un número mágico, todas las combinaciones posibles del número también serán números mágicos.

Por ejemplo, 532, 253, 325, 235, 352, 523 la suma de los dígitos de todos los números da 10 y nuevamente sumamos el resultado (1+0), obtenemos un solo dígito, es decir, 1. Por lo tanto, podemos decir que el número mágico y sus combinaciones también son mágicos.

Implementemos la lógica anterior en un programa Java y verifiquemos si el número dado es mágico o no.

números abc

Programa de números mágicos de Java

MagicNumberExample1.java

 import java.util.Scanner; public class MagicNumberExample1 { public static void main(String args[]) { int n, remainder = 1, number, sum = 0; //creating a constructor of the Scanner class Scanner sc = new Scanner(System.in); System.out.print('Enter a number you want to check: '); //reading an integer form the user n = sc.nextInt(); //assigning the entered number in the variable num number = n; //outer while loop while (number > 9) //while(number > 0 || sum > 9) { //inner while loop while (number > 0) { //determines the remainder remainder = number % 10; sum = sum + remainder; //divides the number by 10 and removes the last digit of the number number = number / 10; } number = sum; sum = 0; } if (number == 1) { System.out.println('The given number is a magic number.'); } else { System.out.println('The given number is not a magic number.'); } } } 

Salida 1:

 Enter a number you want to check: 325 The given number is a magic number. 

Salida 2:

 Enter a number you want to check: 891 The given number is a magic number. 

Veamos otra lógica para comprobar el número mágico.

MagicNumberExample2.java

 import java.util.Scanner; public class MagicNumberExample2 { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print('Enter any number to check: '); //reading an iteger from the user int number = scanner.nextInt(); if(magicNumber(number)) System.out.println(number +' is a magic number.'); else System.out.println(number +' is not a magic number.'); } //user-defined method to check the number is magic or not public static boolean magicNumber(int number) { if( ((number - 1) % 9) == 0) return true; else return false; } } 

Salida 1:

 Enter any number to check: 73 73 is a magic number. 

Salida 2:

quien hizo la escuela
 Enter any number to check: 671 671 is not a magic number. 

Número mágico versus número feliz

La única diferencia entre magia números y feliz números es que en un número mágico sumamos todos los dígitos del número de forma recursiva hasta obtener un dígito de señal, es decir, 1. Mientras que en feliz número, calculamos recursivamente la suma del cuadrado de los dígitos hasta que obtenemos un solo dígito 1. Si este proceso resulta en un ciclo interminable de números que contienen 4, entonces el número se llama infeliz número. Por ejemplo, tenemos que comprobar 19 ¿Es el número mágico y feliz o no?

Ejemplo de número mágico Ejemplo de número feliz
We have to check n = 19 1 + 9 = 10 1 + 0 = <strong>1</strong> 
We have to check n=19 1<sup>2</sup>+ 9<sup>2</sup> = 1 + 81 = 82 8<sup>2</sup>+ 2<sup>2</sup> = 64 + 4 = 68 6<sup>2</sup>+ 8<sup>2</sup> = 36 + 64 = 100 1<sup>2</sup>+ 0<sup>2</sup>+0<sup>2</sup> = 1 + 0 + 0 = <strong>1</strong> 

En ambos casos obtenemos 1 . Por tanto, el número 19 es un número mágico y también un número feliz.