logo

Magisk tall i Java

I programmering, a magisk tall er en numerisk verdi som brukes direkte i koden. Den brukes til identifikasjonsformål. I denne delen vil vi diskutere hva er et magisk tall og hvordan kan vi finne et magisk tall gjennom et Java-program.

Magisk tall i programmering

EN magisk tall er en hardkodet numerisk verdi (tekstverdi i noen tilfeller) i koden som kan endres på et senere tidspunkt. Det virker som vilkårlig og har ingen sammenheng eller mening. Det er vanskelig å oppdatere. For eksempel:

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

Å bruke en slik konstant kan hjelpe oss å skille filene mellom de mange andre filformatene. For eksempel:

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

Hvorfor bør man unngå magiske tall?

Vi bør ikke bruke de magiske tallene i programmering fordi det fører til et antimønster som gjør koden vanskelig å forstå og vedlikeholde. Det skjuler også intensjonen, så bruk av magiske tall bør unngås. Endringene i koden er også bitre hardere.

Det anbefales å bruke konstant for å representere verdier i stedet for å bruke magiske tall. Det forbedrer kodens lesbarhet og gir enkel modifikasjon i koden.

Magisk tall i matematikk

I matematikk, hvis summen av sifrene rekursivt beregnes til et enkelt siffer. Hvis enkeltsifferet er 1, kalles nummeret a magisk tall . Det er ganske likt lykkelig nummer .

For eksempel, 325 er et magisk tall fordi summen av sifrene (3+2+5) er 10, og igjen summerer resultatet (1+0), får vi et enkelt siffer (1) som resultat. Derfor er tallet 325 et magisk tall.

Noen andre magiske tall er 1234, 226, 10, 1, 37, 46, 55, 73 osv. .

Merk at hvis et tall er et magisk tall, vil alle mulige kombinasjoner av tallet også være de magiske tallene.

For eksempel, 532, 253, 325, 235, 352, 523 gir summen av sifrene til alle tallene 10 og igjen summerer resultanten (1+0), får vi et enkeltsifret dvs. 1. Derfor kan vi si at det magiske tallet og dets kombinasjoner også er magi.

La oss implementere logikken ovenfor i et Java-program og sjekke om det gitte tallet er magisk eller ikke.

alfabetet nummerert

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

Utgang 1:

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

Utgang 2:

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

La oss se en annen logikk for å sjekke det magiske tallet.

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

Utgang 1:

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

Utgang 2:

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

Magisk tall vs lykkelig tall

Den eneste forskjellen mellom magi tall og lykkelig tall er at i et magisk tall summerer vi alle sifrene i tallet rekursivt til vi får et signalsiffer dvs. 1. Mens i lykkelig tall, beregner vi rekursivt summen av kvadratet av sifre til vi får et enkelt siffer 1. Hvis denne prosessen resulterer i en endeløs syklus av tall som inneholder 4, kalles tallet en ulykkelig Antall. For eksempel må vi sjekke 19 er magisk og lykkelig tall eller ikke.

Eksempel på magisk tall Eksempel på lykkelig nummer
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 tilfeller får vi 1 . Derav tallet 19 er et magisk tall og også et lykkelig tall.