logo

Numero magico in Java

Nella programmazione, a numero magico è un valore numerico utilizzato direttamente nel codice. Viene utilizzato per scopi di identificazione. In questa sezione discuteremo cos'è un numero magico E come possiamo trovare un numero magico attraverso un programma Java.

numero intero Java in stringa

Numero magico nella programmazione

UN numero magico è un valore numerico hardcoded (valore di testo in alcuni casi) nel codice che potrebbe cambiare in una fase successiva. Sembra arbitrario e non ha contesto o significato. È difficile da aggiornare. Per esempio:

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

L'utilizzo di tale costante può aiutarci a distinguere i file tra molti altri formati di file. Per esempio:

  • I file PDF iniziano con il testo magico %PDF -> Hex (25 50 44 46)
  • I file PNG iniziano con il testo magico %PNG -> Hex (25 50 4E 47)

Perché i numeri magici dovrebbero evitare?

Non dovremmo usare i numeri magici nella programmazione perché portano a un anti-pattern che rende il codice difficile da comprendere e mantenere. Nasconde anche l'intenzione, quindi l'uso dei numeri magici dovrebbe essere evitato. Anche le modifiche al codice sono molto più difficili.

Si consiglia di utilizzare la costante per rappresentare i valori invece di utilizzare i numeri magici. Migliora la leggibilità del codice e fornisce una facile modifica nel codice.

Numero magico in matematica

In matematica, se la somma delle sue cifre ricorsivamente viene calcolato fino ad una sola cifra. Se la singola cifra è 1 il numero si chiama a numero magico . È abbastanza simile a numero felice .

Per esempio, 325 è un numero magico perché la somma delle sue cifre (3+2+5) è 10, e sommiamo nuovamente il risultante (1+0), otteniamo una singola cifra (1) come risultato. Quindi, il numero 325 è un numero magico.

Alcuni altri numeri magici lo sono 1234, 226, 10, 1, 37, 46, 55, 73, ecc. .

Tieni presente che se un numero è un numero magico, anche tutte le possibili combinazioni del numero saranno numeri magici.

Ad esempio, 532, 253, 325, 235, 352, 523 la somma delle cifre di tutti i numeri dà 10 e sommando nuovamente il risultante (1+0), otteniamo una cifra singola, cioè 1. Quindi, possiamo dire che anche il numero magico e le sue combinazioni sono magici.

Implementiamo la logica di cui sopra in un programma Java e controlliamo se il numero fornito è magico o meno.

Programma Java per i numeri magici

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

Uscita 1:

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

Uscita 2:

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

Vediamo un'altra logica per verificare il numero magico.

MagicNumberEsempio2.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; } } 

Uscita 1:

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

Uscita 2:

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

Numero magico contro numero felice

L'unica differenza tra Magia numeri e Contento numeri è che in un numero magico sommiamo ricorsivamente tutte le cifre del numero finché non otteniamo una cifra segnale, ad esempio 1. Mentre in Contento numero, calcoliamo ricorsivamente la somma dei quadrati delle cifre finché non otteniamo una singola cifra 1. Se questo processo dà come risultato un ciclo infinito di numeri contenenti 4, allora il numero è chiamato infelice numero. Dobbiamo, ad esempio, verificare 19 è un numero magico e felice oppure no.

Esempio di numero magico Esempio di numero felice
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> 

In entrambi i casi, otteniamo 1 . Quindi, il numero 19 è un numero magico e anche un numero felice.