logo

Número Mágico em Java

Na programação, um número mágico é um valor numérico usado diretamente no código. É usado para fins de identificação. Nesta seção, discutiremos o que é um número mágico e como podemos encontrar um número mágico por meio de um programa Java.

Número Mágico em Programação

A número mágico é um valor numérico codificado (valor de texto em alguns casos) no código que pode mudar posteriormente. Parece arbitrário e não tem contexto ou significado. É difícil atualizar. Por exemplo:

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

O uso dessa constante pode nos ajudar a distinguir os arquivos entre muitos outros formatos de arquivo. Por exemplo:

  • Os arquivos PDF começam com o texto mágico %PDF -> Hex (25 50 44 46)
  • Arquivos PNG começam com o texto mágico% PNG -> Hex (25 50 4E 47)

Por que os números mágicos devem ser evitados?

Não devemos usar números mágicos na programação porque isso leva a um antipadrão que torna o código difícil de entender e manter. Também esconde a intenção, portanto o uso de números mágicos deve ser evitado. As mudanças no código também são mais difíceis.

arraylist ordenado java

Recomenda-se usar constantes para representar valores em vez de usar números mágicos. Ele melhora a legibilidade do código e fornece fácil modificação no código.

Número Mágico em Matemática

Em matemática, se a soma dos seus dígitos recursivamente é calculado até um único dígito. Se o único dígito for 1, o número é chamado de número mágico . É bastante semelhante ao número feliz .

Por exemplo, 325 é um número mágico porque a soma de seus dígitos (3+2+5) é 10, e novamente somando a resultante (1+0), obtemos um único dígito (1) como resultado. Portanto, o número 325 é um número mágico.

Alguns outros números mágicos são 1234, 226, 10, 1, 37, 46, 55, 73, etc. .

sequência de int

Observe que se um número for um número mágico, todas as combinações possíveis do número também serão números mágicos.

Por exemplo, 532, 253, 325, 235, 352, 523, a soma dos dígitos de todos os números dá 10 e novamente somamos a resultante (1 + 0), obtemos um único dígito, ou seja, 1. Portanto, podemos dizer que o número mágico e suas combinações também são mágicos.

Vamos implementar a lógica acima em um programa Java e verificar se o número fornecido é mágico ou não.

longo para string java

Programa Java Magic Number

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.'); } } } 

Saída 1:

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

Saída 2:

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

Vejamos outra lógica para verificar o número mágico.

MagicNumberExample2.java

criando tabelas em latex
 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; } } 

Saída 1:

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

Saída 2:

 Enter any number to check: 671 671 is not a magic number. 

Número Mágico vs Número Feliz

A única diferença entre Magia números e feliz números é que em um número mágico somamos todos os dígitos do número recursivamente até obtermos um dígito de sinal, ou seja, 1. Enquanto em feliz número, calculamos recursivamente a soma do quadrado dos dígitos até obtermos um único dígito 1. Se esse processo resultar em um ciclo interminável de números contendo 4, então o número é chamado de infeliz número. Por exemplo, temos que verificar 19 é um número mágico e feliz ou não.

Exemplo de número mágico Exemplo 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> 

Em ambos os casos, obtemos 1 . Portanto, o número 19 é um número mágico e também um número feliz.