logo

Magische Zahl in Java

In der Programmierung a magische Zahl ist ein numerischer Wert, der direkt im Code verwendet wird. Es dient der Identifizierung. In diesem Abschnitt werden wir diskutieren Was ist eine magische Zahl? Und Wie können wir mit einem Java-Programm eine magische Zahl finden?

Magische Zahl in der Programmierung

A magische Zahl ist ein fest codierter numerischer Wert (in manchen Fällen ein Textwert) im Code, der sich zu einem späteren Zeitpunkt ändern kann. Es wirkt willkürlich und hat weder Kontext noch Bedeutung. Es ist schwer zu aktualisieren. Zum Beispiel:

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

Die Verwendung einer solchen Konstante kann uns helfen, die Dateien von den vielen anderen Dateiformaten zu unterscheiden. Zum Beispiel:

  • PDF-Dateien beginnen mit dem Zaubertext %PDF -> Hex (25 50 44 46)
  • PNG-Dateien beginnen mit dem magischen Text %PNG -> Hex (25 50 4E 47)

Warum sollten magische Zahlen vermieden werden?

Wir sollten die magischen Zahlen beim Programmieren nicht verwenden, da dies zu einem Anti-Pattern führt, das das Verständnis und die Wartung des Codes erschwert. Es verbirgt auch die Absicht, sodass die Verwendung magischer Zahlen vermieden werden sollte. Auch die Änderungen im Code sind bitter härter.

Es wird empfohlen, Konstanten zur Darstellung von Werten zu verwenden, anstatt magische Zahlen zu verwenden. Es verbessert die Lesbarkeit des Codes und ermöglicht eine einfache Änderung des Codes.

Magische Zahl in der Mathematik

In der Mathematik die Summe seiner Ziffern rekursiv wird bis auf eine einzelne Ziffer berechnet. Wenn die einzelne Ziffer 1 ist, heißt die Zahl a magische Zahl . Es ist ziemlich ähnlich glückliche Zahl .

Zum Beispiel, 325 ist eine magische Zahl, weil die Summe ihrer Ziffern (3+2+5) 10 ist. Summiert man die Resultierende (1+0) noch einmal, erhält man als Ergebnis eine einzelne Ziffer (1). Daher ist die Zahl 325 eine magische Zahl.

Einige andere magische Zahlen sind 1234, 226, 10, 1, 37, 46, 55, 73 usw .

Beachten Sie, dass, wenn eine Zahl eine magische Zahl ist, alle möglichen Kombinationen der Zahl auch magische Zahlen sind.

Zum Beispiel 532, 253, 325, 235, 352, 523, die Summe der Ziffern aller Zahlen ergibt 10 und summiert das Ergebnis (1+0) erneut, wir erhalten eine einzelne Ziffer, d. h. 1. Daher können wir sagen dass die magische Zahl und ihre Kombinationen auch magisch sind.

Lassen Sie uns die obige Logik in einem Java-Programm implementieren und prüfen, ob die angegebene Zahl magisch ist oder nicht.

Java Magic Number-Programm

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

Ausgabe 1:

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

Ausgabe 2:

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

Sehen wir uns eine andere Logik zur Überprüfung der magischen Zahl an.

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

Ausgabe 1:

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

Ausgabe 2:

arp – ein Befehl
 Enter any number to check: 671 671 is not a magic number. 

Magische Zahl vs. glückliche Zahl

Der einzige Unterschied zwischen Magie Zahlen und Glücklich Zahlen besteht darin, dass wir in einer magischen Zahl alle Ziffern der Zahl rekursiv summieren, bis wir eine Signalziffer erhalten, z. B. 1. Während in Glücklich Zahl berechnen wir rekursiv die Summe des Ziffernquadrats, bis wir eine einzelne Ziffer 1 erhalten. Wenn dieser Prozess zu einem endlosen Zahlenzyklus mit 4 führt, wird die Zahl als an bezeichnet unzufrieden Nummer. Wir müssen zum Beispiel prüfen 19 ob es eine magische und glückliche Zahl ist oder nicht.

Beispiel für eine magische Zahl Beispiel für eine glückliche Zahl
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 beiden Fällen erhalten wir 1 . Daher die Zahl 19 ist eine magische Zahl und auch eine glückliche Zahl.