logo

Magični broj u Javi

U programiranju, a čarobni broj je numerička vrijednost koja se koristi izravno u kodu. Koristi se u svrhu identifikacije. U ovom odjeljku ćemo raspravljati što je magični broj i kako možemo pronaći magični broj kroz Java program.

Magični broj u programiranju

A čarobni broj je tvrdo kodirana numerička vrijednost (tekstualna vrijednost u nekim slučajevima) u kodu koja se može promijeniti u kasnijoj fazi. Čini se proizvoljnim i nema konteksta ni značenja. Teško ga je ažurirati. Na primjer:

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

Korištenje takve konstante može nam pomoći da razlikujemo datoteke među mnogim drugim formatima datoteka. Na primjer:

  • PDF datoteke počinju čarobnim tekstom %PDF -> Hex (25 50 44 46)
  • PNG datoteke počinju čarobnim tekstom %PNG -> Hex (25 50 4E 47)

Zašto izbjegavati magične brojeve?

Ne bismo trebali koristiti magične brojeve u programiranju jer to dovodi do anti-uzorka koji kod čini teškim za razumijevanje i održavanje. Također skriva namjeru pa treba izbjegavati korištenje magičnih brojeva. Promjene kodeksa također su gorke teže.

značajke jave 8

Preporučuje se korištenje konstante za predstavljanje vrijednosti umjesto korištenja magičnih brojeva. Poboljšava čitljivost koda i omogućuje jednostavnu izmjenu koda.

Magični broj u matematici

U matematici, ako je zbroj njegovih znamenki rekurzivno izračunava se do jedne znamenke. Ako je jedna znamenka 1, tada se broj naziva a čarobni broj . Prilično je sličan sretan broj .

Na primjer, 325 je magični broj jer je zbroj njegovih znamenki (3+2+5) 10, a opet zbrojimo rezultantu (1+0), kao rezultat dobivamo jednoznamenkasti broj (1). Dakle, broj 325 je magičan broj.

Neki drugi magični brojevi su 1234, 226, 10, 1, 37, 46, 55, 73 itd. .

što je linux datotečni sustav

Imajte na umu da ako je broj magični broj, tada će sve moguće kombinacije broja također biti magični brojevi.

Na primjer, 532, 253, 325, 235, 352, 523 zbroj znamenki svih brojeva daje 10 i ponovno zbrojimo rezultantu (1+0), dobivamo jednoznamenkasti, tj. 1. Dakle, možemo reći da su čarobni broj i njegove kombinacije također magija.

Implementirajmo gornju logiku u Java program i provjerimo je li zadani broj magičan ili ne.

pretvorba tipa i kasting u Javi

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.'); } } } 

Izlaz 1:

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

Izlaz 2:

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

Pogledajmo drugu logiku za provjeru magičnog broja.

MagicNumberExample2.java

kružno raspoređivanje
 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; } } 

Izlaz 1:

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

Izlaz 2:

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

Čarobni broj protiv sretnog broja

Jedina razlika između magija brojevi i sretan brojeva je da u magičnom broju zbrajamo sve znamenke broja rekurzivno dok ne dobijemo signalnu znamenku, tj. 1. Dok u sretan broja, rekurzivno izračunavamo zbroj kvadrata znamenki dok ne dobijemo jednu znamenku 1. Ako ovaj proces rezultira beskonačnim ciklusom brojeva koji sadrže 4, tada se broj naziva nesretna broj. Na primjer, moramo provjeriti 19 je li čaroban i sretan broj ili ne.

Primjer magičnog broja Primjer sretnog broja
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> 

U oba slučaja dobivamo 1 . Dakle, broj 19 je magičan broj i također sretan broj.