A programozásban a varázslatos szám egy számérték, amelyet közvetlenül a kódban használnak. Azonosítási célokra használják. Ebben a részben megvitatjuk mi az a varázsszám és hogyan találhatunk mágikus számot egy Java programon keresztül.
Mágikus szám a programozásban
A varázslatos szám egy kemény kódolt numerikus érték (egyes esetekben szöveges érték) a kódban, amely a későbbiekben megváltozhat. Önkényesnek tűnik, és nincs összefüggése vagy jelentése. Nehéz frissíteni. Például:
const num = 74; //where 2 is hard-coded const number = num / 2; //it should be properly defined
Az ilyen konstans használata segíthet megkülönböztetni a fájlokat a sok más fájlformátum között. Például:
- A PDF-fájlok a %PDF -> Hex varázsszöveggel kezdődnek (25 50 44 46)
- A PNG fájlok a %PNG -> Hex (25 50 4E 47) varázsszöveggel kezdődnek.
Miért érdemes elkerülni a mágikus számokat?
A programozás során ne használjuk a mágikus számokat, mert az anti-mintázathoz vezet, ami megnehezíti a kód megértését és karbantartását. A szándékot is elrejti, így a mágikus számok használatát kerülni kell. A kód változásai is keserűbbek.
Javasoljuk, hogy a varázsszámok helyett konstanst használjon az értékek megjelenítéséhez. Javítja a kód olvashatóságát, és egyszerű módosítást tesz lehetővé a kódban.
Varázsszám a matematikában
A matematikában, ha számjegyeinek összege rekurzív módon egy számjegyig számítják. Ha az egyjegyű 1, akkor a számot a-nak nevezzük varázslatos szám . Eléggé hasonlít a boldog szám .
Például, 325 bűvös szám, mert számjegyeinek összege (3+2+5) 10, és az eredőt (1+0) ismét összeadva egy egyjegyű (1) kapunk eredményt. Ezért a 325-ös szám egy varázslatos szám.
java egy tömblistát rendez
Néhány más mágikus szám is 1234, 226, 10, 1, 37, 46, 55, 73 stb. .
Vegye figyelembe, hogy ha egy szám varázsszám, akkor a számok összes lehetséges kombinációja egyben varázsszám is lesz.
Például 532, 253, 325, 235, 352, 523 az összes szám számjegyeinek összege 10-et ad, és ismét összegezve az eredőt (1+0), egy egyjegyűt kapunk, azaz 1-et. hogy a mágikus szám és kombinációi is varázslatok.
Valósítsuk meg a fenti logikát egy Java programban, és nézzük meg, hogy a megadott szám varázslatos-e vagy sem.
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.'); } } }
1. kimenet:
Enter a number you want to check: 325 The given number is a magic number.
2. kimenet:
Enter a number you want to check: 891 The given number is a magic number.
Lássunk egy másik logikát a mágikus szám ellenőrzésére.
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; } }
1. kimenet:
Enter any number to check: 73 73 is a magic number.
2. kimenet:
olyan webhelyek, mint a bedpage
Enter any number to check: 671 671 is not a magic number.
Mágikus szám vs boldog szám
Az egyetlen különbség a között varázslat számok és boldog A számok az, hogy egy mágikus számban a szám összes számjegyét rekurzívan összegezzük, amíg nem kapunk egy jel számjegyet, azaz 1-et. boldog számot, akkor rekurzívan számítjuk ki a számjegyek négyzetének összegét, amíg egy egyjegyű 1-et nem kapunk. Ha ez a folyamat egy végtelen 4-et tartalmazó számciklust eredményez, akkor a számot boldogtalan szám. Például ellenőriznünk kell 19 varázslat és boldog szám, vagy sem.
Varázsszámú példa | Boldog szám példa |
---|---|
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> |
Mindkét esetben megkapjuk 1 . Ezért a szám 19 egy varázslatos szám és egyben boldog szám is.