logo

Magické číslo v Javě

V programování a magické číslo je číselná hodnota, která se používá přímo v kódu. Používá se pro účely identifikace. V této části budeme diskutovat co je magické číslo a jak můžeme najít magické číslo prostřednictvím programu Java.

Magické číslo v programování

A magické číslo je pevně zakódovaná číselná hodnota (v některých případech textová hodnota) v kódu, která se může později změnit. Vypadá to jako svévolné a nemá to žádný kontext ani význam. Je těžké aktualizovat. Například:

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

Použití takové konstanty nám může pomoci rozlišit soubory mezi mnoha dalšími formáty souborů. Například:

  • Soubory PDF začínají magickým textem %PDF -> Hex (25 50 44 46)
  • Soubory PNG začínají magickým textem %PNG -> Hex (25 50 4E 47)

Proč se magickým číslům vyhnout?

Při programování bychom neměli používat magická čísla, protože to vede k anti-vzoru, který ztěžuje pochopení a údržbu kódu. Také skrývá záměr, takže je třeba se vyhnout použití magických čísel. Změny v kódu jsou také o něco těžší.

Doporučuje se používat k reprezentaci hodnot konstantu místo magických čísel. Zlepšuje čitelnost kódu a umožňuje snadné úpravy v kódu.

Magické číslo v matematice

V matematice, pokud součet jeho číslic rekurzivně se počítá do jedné číslice. Pokud je jedna číslice 1, pak se číslo nazývá a magické číslo . Je to docela podobné šťastné číslo .

instance java

Například, 325 je magické číslo, protože součet jeho číslic (3+2+5) je 10 a sečtením výslednice (1+0) dostaneme jako výsledek jedinou číslici (1). Číslo 325 je tedy magické číslo.

Některá další magická čísla jsou 1234, 226, 10, 1, 37, 46, 55, 73 atd. .

Všimněte si, že pokud je číslo magické číslo, pak všechny možné kombinace čísla budou také magickými čísly.

Například 532, 253, 325, 235, 352, 523 součet cifer všech čísel dává 10 a opět sečteme výslednici (1+0), dostaneme jednocifernou, tj. 1. Můžeme tedy říci že magické číslo a jeho kombinace jsou také magické.

tenký algoritmus

Implementujme výše uvedenou logiku do Java programu a zkontrolujme, zda je dané číslo magické nebo ne.

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. 

Podívejme se na další logiku pro kontrolu magického čísla.

np.nuly

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ý rozdíl mezi kouzlo čísla a šťastný čísla je, že v magickém čísle sečteme všechny číslice čísla rekurzivně, dokud nedostaneme signální číslici, tj. 1. Zatímco v šťastný číslo, rekurzivně počítáme součet čtverců číslic, dokud nedostaneme jedinou číslici 1. Pokud tento proces vyústí v nekonečný cyklus čísel obsahujících 4, pak se číslo nazývá nešťastný číslo. Například musíme zkontrolovat 19 je magické a šťastné číslo nebo ne.

Příklad magického čísla Pří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 obou případech dostáváme 1 . Proto číslo 19 je magické číslo a také šťastné číslo.