logo

Nombre magique en Java

En programmation, un nombre magique est une valeur numérique utilisée directement dans le code. Il est utilisé à des fins d'identification. Dans cette section, nous discuterons qu'est-ce qu'un nombre magique et comment pouvons-nous trouver un nombre magique grâce à un programme Java.

Nombre magique en programmation

UN nombre magique est une valeur numérique codée en dur (valeur texte dans certains cas) dans le code qui peut changer ultérieurement. Cela semble arbitraire et n’a aucun contexte ni signification. Il est difficile de mettre à jour. Par exemple:

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

L'utilisation d'une telle constante peut nous aider à distinguer les fichiers parmi les nombreux autres formats de fichiers. Par exemple:

  • Les fichiers PDF commencent par le texte magique %PDF -> Hex (25 50 44 46)
  • Les fichiers PNG commencent par le texte magique %PNG -> Hex (25 50 4E 47)

Pourquoi faut-il éviter les nombres magiques ?

Nous ne devrions pas utiliser les nombres magiques en programmation car cela conduit à un anti-modèle qui rend le code difficile à comprendre et à maintenir. Cela cache également l’intention, de sorte que l’utilisation de nombres magiques doit être évitée. Les changements dans le code sont également plus durs.

Il est recommandé d'utiliser une constante pour représenter les valeurs au lieu d'utiliser des nombres magiques. Il améliore la lisibilité du code et permet une modification facile du code.

Nombre magique en mathématiques

En mathématiques, si la somme de ses chiffres récursivement est calculé jusqu'à un seul chiffre. Si le chiffre unique est 1, alors le nombre est appelé un nombre magique . C'est assez similaire au numéro heureux .

Par exemple, 325 est un nombre magique car la somme de ses chiffres (3+2+5) est 10, et en additionnant encore la résultante (1+0), nous obtenons un seul chiffre (1) comme résultat. Le nombre 325 est donc un nombre magique.

D'autres nombres magiques sont 1234, 226, 10, 1, 37, 46, 55, 73, etc. .

Notez que si un nombre est un nombre magique alors toutes les combinaisons possibles du nombre seront également les nombres magiques.

Par exemple, 532, 253, 325, 235, 352, 523, la somme des chiffres de tous les nombres donne 10 et en additionnant à nouveau la résultante (1+0), nous obtenons un seul chiffre, c'est-à-dire 1. Par conséquent, nous pouvons dire que le nombre magique et ses combinaisons sont aussi magiques.

Implémentons la logique ci-dessus dans un programme Java et vérifions si le nombre donné est magique ou non.

Programme de nombres magiques Java

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

Sortie 1 :

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

Sortie 2 :

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

Voyons une autre logique pour vérifier le nombre magique.

NuméroMagiqueExample2.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; } } 

Sortie 1 :

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

Sortie 2 :

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

Nombre magique vs nombre heureux

La seule différence entre la magie des chiffres et heureux nombres est que dans un nombre magique, nous additionnons tous les chiffres du nombre de manière récursive jusqu'à ce que nous obtenions un chiffre de signal, c'est-à-dire 1. Pendant que nous sommes dans heureux nombre, nous calculons récursivement la somme du carré des chiffres jusqu'à obtenir un seul chiffre 1. Si ce processus aboutit à un cycle sans fin de nombres contenant 4, alors le nombre est appelé un malheureux nombre. Par exemple, il faut vérifier 19 est-ce un nombre magique et heureux ou pas.

Exemple de nombre magique Exemple de numéro heureux
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> 

Dans les deux cas, on obtient 1 . D'où le nombre 19 est un nombre magique et aussi un nombre heureux.