logo

Magisk nummer i Java

I programmering, en magiske tal er en numerisk værdi, der bruges direkte i koden. Det bruges til identifikationsformål. I dette afsnit vil vi diskutere hvad er et magisk tal og hvordan kan vi finde et magisk tal gennem et Java-program.

Magisk tal i programmering

EN magiske tal er en hårdkodet numerisk værdi (tekstværdi i nogle tilfælde) i koden, som kan ændre sig på et senere tidspunkt. Det virker som vilkårligt og har ingen sammenhæng eller betydning. Det er svært at opdatere. For eksempel:

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

Brug af en sådan konstant kan hjælpe os med at skelne filerne blandt de mange andre filformater. For eksempel:

  • PDF-filer begynder med den magiske tekst %PDF -> Hex (25 50 44 46)
  • PNG-filer begynder med den magiske tekst %PNG -> Hex (25 50 4E 47)

Hvorfor skal man undgå magiske tal?

Vi bør ikke bruge de magiske tal i programmering, fordi det fører til et anti-mønster, der gør koden svær at forstå og vedligeholde. Det skjuler også hensigten, så brugen af ​​magiske tal bør undgås. Ændringerne i koden er også bitre hårdere.

Det anbefales at bruge konstant til at repræsentere værdier i stedet for at bruge magiske tal. Det forbedrer kodens læsbarhed og giver nem modifikation af koden.

Magisk tal i matematik

I matematik, hvis summen af ​​dens cifre rekursivt beregnes til et enkelt ciffer. Hvis enkeltcifret er 1, kaldes tallet a magiske tal . Det minder ret meget om glade nummer .

For eksempel, 325 er et magisk tal, fordi summen af ​​dets cifre (3+2+5) er 10, og igen opsummer resultanten (1+0), får vi et enkelt ciffer (1) som resultat. Derfor er tallet 325 et magisk tal.

Nogle andre magiske tal er 1234, 226, 10, 1, 37, 46, 55, 73 osv. .

Bemærk, at hvis et tal er et magisk tal, vil alle de mulige kombinationer af tallet også være de magiske tal.

For eksempel, 532, 253, 325, 235, 352, 523 giver summen af ​​cifrene af alle tallene 10 og igen summere resultanten (1+0), får vi et enkelt-cifret, dvs. 1. Derfor kan vi sige at det magiske tal og dets kombinationer også er magi.

Lad os implementere ovenstående logik i et Java-program og kontrollere, om det givne tal er magisk eller ej.

alfabetet nummereret

Java Magic Number Program

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

Output 1:

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

Output 2:

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

Lad os se en anden logik for at kontrollere det magiske tal.

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

Output 1:

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

Output 2:

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

Magic Number vs Happy Number

Den eneste forskel mellem magi tal og lykkelig tal er, at vi i et magisk tal summerer alle cifrene i tallet rekursivt, indtil vi får et signalciffer, dvs. 1. Mens i lykkelig tal, beregner vi rekursivt summen af ​​kvadratet af cifre, indtil vi får et enkelt ciffer 1. Hvis denne proces resulterer i en endeløs cyklus af tal, der indeholder 4, så kaldes tallet en ulykkelig nummer. For eksempel skal vi tjekke 19 er magisk og glad nummer eller ej.

Magisk tal eksempel Happy Number Eksempel
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> 

I begge tilfælde får vi 1 . Derfor nummeret 19 er et magisk tal og også et lykkeligt tal.