logo

Java'da Sihirli Sayı

Programlamada bir sihirli sayı doğrudan kodda kullanılan sayısal bir değerdir. Tanımlama amacıyla kullanılır. Bu bölümde tartışacağız sihirli sayı nedir Ve Java programı aracılığıyla sihirli bir sayıyı nasıl bulabiliriz?

Programlamada Sihirli Sayı

A sihirli sayı kodda daha sonraki bir aşamada değişebilecek sabit kodlanmış sayısal bir değerdir (bazı durumlarda metin değeri). Keyfi gibi görünüyor ve hiçbir bağlamı veya anlamı yok. Güncellemek zordur. Örneğin:

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

Böyle bir sabitin kullanılması, dosyaları diğer birçok dosya formatı arasında ayırt etmemize yardımcı olabilir. Örneğin:

  • PDF Dosyaları %PDF -> Hex (25 50 44 46) sihirli metniyle başlar
  • PNG Dosyaları %PNG -> Hex (25 50 4E 47) sihirli metniyle başlar

Neden sihirli sayılardan kaçınılmalıdır?

Programlamada sihirli sayıları kullanmamalıyız çünkü bu, kodun anlaşılmasını ve bakımını zorlaştıran bir anti-modele yol açar. Ayrıca niyeti de gizlediğinden sihirli sayıların kullanımından kaçınılmalıdır. Koddaki değişiklikler de daha sert.

Değerleri temsil etmek için sihirli sayılar kullanmak yerine sabit kullanılması önerilir. Kodun okunabilirliğini artırır ve kodda kolay değişiklik yapılmasını sağlar.

Matematikte Sihirli Sayılar

Matematikte rakamların toplamı ise tekrarlı tek haneye kadar hesaplanır. Tek rakamı 1 ise bu sayıya denir sihirli sayı . Oldukça benzer mutlu sayı .

java hash haritası

Örneğin, 325 sihirli bir sayıdır çünkü (3+2+5) rakamlarının toplamı 10'dur ve yine sonucu (1+0) topladığımızda sonuç olarak tek rakam (1) elde ederiz. Dolayısıyla 325 sayısı sihirli bir sayıdır.

Diğer bazı sihirli sayılar 1234, 226, 10, 1, 37, 46, 55, 73 vb. .

Bir sayı sihirli bir sayıysa, sayının tüm olası kombinasyonlarının da sihirli sayılar olacağını unutmayın.

Örneğin 532, 253, 325, 235, 352, 523 tüm sayıların rakamları toplamı 10 verir ve yine sonucu (1+0) toplarsak tek haneli yani 1 elde ederiz. Dolayısıyla şunu söyleyebiliriz: sihirli sayı ve kombinasyonlarının da sihirli olduğunu.

Yukarıdaki mantığı bir Java programında uygulayalım ve verilen sayının sihirli olup olmadığını kontrol edelim.

Java Sihirli Sayı 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.'); } } } 

Çıkış 1:

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

Çıkış 2:

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

Sihirli sayıyı kontrol etmek için başka bir mantık görelim.

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; } } 

Çıkış 1:

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

Çıkış 2:

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

Sihirli Sayı ve Mutlu Sayı

Aradaki tek fark büyü sayılar ve mutlu sayılar, sihirli bir sayıda, bir sinyal basamağı yani 1 elde edene kadar sayının tüm basamaklarını yinelemeli olarak toplamamızdır. mutlu Bir sayıyı tek bir rakam 1 elde edene kadar rakamların karelerinin toplamını yinelemeli olarak hesaplarız. Bu işlem, 4'ü içeren sonsuz bir sayı döngüsüyle sonuçlanırsa, bu sayıya bir sayı denir. mutsuz sayı. Örneğin, kontrol etmeliyiz 19 sihirli ve mutlu bir sayı mı değil mi?

Sihirli Sayı Örneği Mutlu Sayı Örneği
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> 

Her iki durumda da şunu elde ederiz 1 . Dolayısıyla sayı 19 sihirli bir sayıdır ve aynı zamanda mutlu bir sayıdır.