logo

Магічне число в Java

У програмуванні а магічне число це числове значення, яке використовується безпосередньо в коді. Він використовується для ідентифікації. У цьому розділі ми обговоримо що таке магічне число і як ми можемо знайти магічне число за допомогою програми Java.

конвертувати ціле число в рядок java

Магічне число в програмуванні

А магічне число це жорстко закодоване числове значення (в деяких випадках текстове значення) у коді, яке може змінитися пізніше. Це здається довільним і не має контексту чи значення. Це важко оновити. Наприклад:

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

Використання такої константи може допомогти нам виділити файли серед багатьох інших форматів файлів. Наприклад:

  • PDF-файли починаються з магічного тексту %PDF -> Hex (25 50 44 46)
  • Файли PNG починаються з магічного тексту %PNG -> Hex (25 50 4E 47)

Чому варто уникати магічних чисел?

Ми не повинні використовувати магічні числа в програмуванні, оскільки це призводить до антишаблону, який ускладнює розуміння та підтримку коду. Це також приховує намір, тому слід уникати використання магічних чисел. Зміни в кодексі також гіркі важче.

Рекомендується використовувати константу для представлення значень замість використання магічних чисел. Це покращує читабельність коду та забезпечує легку зміну коду.

Магічне число в математиці

У математиці, якщо сума його цифр рекурсивно обчислюється до однієї цифри. Якщо єдина цифра дорівнює 1, то число називається а магічне число . Це досить схоже на щасливе число .

Наприклад, 325 є магічним числом, тому що сума його цифр (3+2+5) дорівнює 10, і знову підсумовуючи результат (1+0), ми отримуємо одну цифру (1) як результат. Отже, число 325 є магічним числом.

Деякі інші магічні числа 1234, 226, 10, 1, 37, 46, 55, 73 тощо .

Зауважте, що якщо число є магічним числом, то всі можливі комбінації числа також будуть магічними числами.

Наприклад, 532, 253, 325, 235, 352, 523 сума цифр усіх чисел дає 10 і знову підсумовуючи результат (1+0), отримуємо одноцифрове число, тобто 1. Отже, можна сказати що магічне число та його комбінації також є магією.

Давайте реалізуємо наведену вище логіку в програмі Java і перевіримо, чи є дане число магічним чи ні.

Програма магічних чисел Java

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:

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

Результат 2:

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

Давайте подивимося іншу логіку перевірки магічного числа.

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:

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

Результат 2:

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

Магічне число проти щасливого числа

Єдина різниця між магія числа і щасливий чисел полягає в тому, що в магічному числі ми підсумовуємо всі цифри числа рекурсивно, доки не отримаємо сигнальну цифру, тобто 1. Поки в щасливий число, ми рекурсивно обчислюємо суму квадрата цифр, поки не отримаємо одну цифру 1. Якщо цей процес призводить до нескінченного циклу чисел, що містять 4, то число називається нещасний номер. Наприклад, ми повинні перевірити 19 чарівне і щасливе число чи ні.

Приклад магічного числа Приклад щасливого числа
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> 

В обох випадках ми отримуємо 1 . Отже, кількість 19 це магічне число, а також щасливе число.