logo

Magické číslo v Jave

V programovaní a magické číslo je číselná hodnota, ktorá sa používa priamo v kóde. Používa sa na identifikačné účely. V tejto časti budeme diskutovať čo je magické číslo a ako môžeme nájsť magické číslo prostredníctvom programu Java.

Magické číslo v programovaní

A magické číslo je pevne zakódovaná číselná hodnota (v niektorých prípadoch textová hodnota) v kóde, ktorá sa môže neskôr zmeniť. Vyzerá to ako svojvoľné a nemá to žiadny kontext ani význam. Je ťažké aktualizovať. Napríklad:

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

Použitie takejto konštanty nám môže pomôcť rozlíšiť súbory medzi mnohými inými formátmi súborov. Napríklad:

  • Súbory PDF začínajú magickým textom %PDF -> Hex (25 50 44 46)
  • Súbory PNG začínajú magickým textom %PNG -> Hex (25 50 4E 47)

Prečo by ste sa mali vyhýbať magickým číslam?

Pri programovaní by sme nemali používať magické čísla, pretože to vedie k anti-vzoru, ktorý sťažuje pochopenie a údržbu kódu. Tiež skrýva zámer, takže by ste sa mali vyhnúť používaniu magických čísel. Horšie sú aj zmeny v kóde.

Na vyjadrenie hodnôt sa odporúča použiť konštantu namiesto magických čísel. Zlepšuje čitateľnosť kódu a umožňuje jednoduchú úpravu kódu.

Magické číslo v matematike

V matematike, ak súčet jej cifer rekurzívne sa počíta do jednej číslice. Ak je jedna číslica 1, potom sa číslo nazýva a magické číslo . Je to dosť podobné šťastné číslo .

Napríklad, 325 je magické číslo, pretože súčet jeho číslic (3+2+5) je 10 a opäť sčítaním výslednice (1+0) dostaneme ako výsledok jednu číslicu (1). Preto je číslo 325 magické číslo.

Niektoré ďalšie magické čísla sú 1234, 226, 10, 1, 37, 46, 55, 73 atď. .

Všimnite si, že ak je číslo magické číslo, potom všetky možné kombinácie čísla budú tiež magickými číslami.

Napríklad 532, 253, 325, 235, 352, 523 súčet číslic všetkých čísel dáva 10 a opäť sčítajte výslednicu (1+0), dostaneme jednociferné číslo, t.j. 1. Môžeme teda povedať že magické číslo a jeho kombinácie sú tiež magické.

Implementujme vyššie uvedenú logiku v programe Java a skontrolujte, či je dané číslo magické alebo nie.

Program Java Magic Number

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

Výstup 1:

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

Výstup 2:

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

Pozrime sa na ďalšiu logiku na kontrolu magického čísla.

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

Výstup 1:

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

Výstup 2:

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

Magické číslo vs šťastné číslo

Jediný rozdiel medzi mágia čísla a šťasný čísla je, že v magickom čísle sčítame všetky číslice čísla rekurzívne, až kým nedostaneme signálnu číslicu t.j. 1. Kým v šťasný číslo, rekurzívne počítame súčet druhej mocniny číslic, až kým nedostaneme jedinú číslicu 1. Ak výsledkom tohto procesu je nekonečný cyklus čísel obsahujúcich 4, potom sa číslo nazýva nešťastný číslo. Napríklad musíme skontrolovať 19 je magické a šťastné číslo alebo nie.

Príklad magického čísla Príklad šťastného čísla
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> 

V oboch prípadoch dostaneme 1 . Preto číslo 19 je magické číslo a tiež šťastné číslo.