logo

Магическо число в Java

В програмирането, a магическо число е числова стойност, която се използва директно в кода. Използва се за идентификационни цели. В този раздел ще обсъдим какво е магическо число и как можем да намерим магическо число чрез 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, тогава числото се нарича a магическо число . Доста е подобен на щастлив номер .

Например, 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 е магическо число, а също и щастливо число.