logo

Número màgic a Java

En programació, a nombre màgic és un valor numèric que s'utilitza directament al codi. S'utilitza amb finalitats d'identificació. En aquesta secció, parlarem què és un nombre màgic i com podem trobar un nombre màgic mitjançant un programa Java.

Número màgic en programació

A nombre màgic és un valor numèric codificat (valor de text en alguns casos) del codi que pot canviar en una etapa posterior. Sembla arbitrari i no té context ni significat. És difícil d'actualitzar. Per exemple:

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

L'ús d'aquesta constant ens pot ajudar a distingir els fitxers entre molts altres formats de fitxer. Per exemple:

  • Els fitxers PDF comencen amb el text màgic %PDF -> Hex (25 50 44 46)
  • Els fitxers PNG comencen amb el text màgic %PNG -> Hex (25 50 4E 47)

Per què haurien d'evitar els números màgics?

No hem d'utilitzar els números màgics a la programació perquè condueix a un anti-patró que dificulta la comprensió i el manteniment del codi. També amaga la intenció per la qual cosa s'ha d'evitar l'ús de números màgics. Els canvis en el codi també són més durs.

javatpoint java

Es recomana utilitzar constant per representar valors en lloc d'utilitzar números màgics. Millora la llegibilitat del codi i facilita la modificació del codi.

Nombre màgic en matemàtiques

En matemàtiques, si la suma dels seus dígits recursivament es calcula fins a un sol dígit. Si l'únic dígit és 1, el nombre s'anomena a nombre màgic . És força semblant al número feliç .

Per exemple, 325 és un nombre màgic perquè la suma de les seves xifres (3+2+5) és 10, i sumant de nou la resultant (1+0), obtenim un sol dígit (1) com a resultat. Per tant, el número 325 és un nombre màgic.

Alguns altres números màgics són 1234, 226, 10, 1, 37, 46, 55, 73, etc. .

executa l'intèrpret d'ordres de l'script

Tingueu en compte que si un nombre és un nombre màgic, totes les combinacions possibles del nombre també seran els nombres màgics.

Per exemple, 532, 253, 325, 235, 352, 523 la suma de dígits de tots els nombres dóna 10 i tornem a sumar la resultant (1+0), obtenim un dígit, és a dir, 1. Per tant, podem dir que el nombre màgic i les seves combinacions també són màgiques.

Implementem la lògica anterior en un programa Java i comprovem si el número donat és màgic o no.

gzip per a Linux

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

Sortida 1:

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

Sortida 2:

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

Vegem una altra lògica per comprovar el número màgic.

MagicNumberExample2.java

sistemes experts
 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; } } 

Sortida 1:

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

Sortida 2:

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

Número màgic vs nombre feliç

L'única diferència entre màgia nombres i feliç nombres és que en un nombre màgic sumem tots els dígits del nombre de forma recursiva fins a obtenir un dígit senyal, és a dir, 1. feliç nombre, calculem recursivament la suma del quadrat de xifres fins a obtenir un sol dígit 1. Si aquest procés dóna com a resultat un cicle interminable de nombres que contenen 4, aleshores el nombre s'anomena infeliç nombre. Per exemple, hem de comprovar 19 és màgic i feliç número o no.

Exemple de nombre màgic Exemple de nombre feliç
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 tots dos casos, aconseguim 1 . Per tant, el nombre 19 és un nombre màgic i també un número feliç.