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.