logo

Mágikus szám Java nyelven

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.