Java >> Java tutorial >  >> Java

Magic Number Program i Java

I computerprogrammering har udtrykket magisk tal flere betydninger. I dette indlæg vil vi diskutere det magiske tal og også udvikle et Java-program til at kontrollere, at det givne tal er et magisk tal eller ej.

Et tal siges at være et magisk tal, hvis summen af ​​dets cifre beregnes til et enkelt ciffer rekursivt ved at tilføje summen af ​​cifrene efter hver tilføjelse. Hvis enkeltcifret kommer ud til at være 1, så er tallet et magisk tal. Eksempler på magiske tal er:- 10, 19, 28, 55, 1234 e.t.c.

1054 =1 + 0 + 5 + 4 =10 (Det er et 2-cifret tal, så find igen summen af ​​cifre)
10 =1 + 0 =1 (til sidst er summen af ​​cifre 1)
Derfor 1054 er et magisk tal.

Tilsvarende
25417 =2 + 5 + 4 + 1 + 7 =19 (da det er et tocifret tal)
19 =1 + 9 =10 (Igen er det tocifret tal)
10 =1 + 0 =1 (summen af ​​cifre er endelig 1)
Derfor er 25417 et magisk tal.

import java.util.Scanner;

public class MagicNumber {

   // method to find sum of digits
   // of a given number
   public static int sumOfDigits(int number) {

      int sum = 0;

      while(number != 0) {
         // find last digit
         // add last digit to sum
         sum += (number % 10);

         // remove last digit
         number = number / 10;
      }

      // return sum of digits of the number
      return sum;
   }

   // method to check number is magic number
   public static boolean isMagic(int number) {

      int result = number;

      // find sum of digits until
      // number having single digit
      while(result / 10 != 0) {
        result = sumOfDigits(result);
      }

      return (result==1) ? true : false;
   }

   public static void main(String[] args) {

      // declare variables
      int number = 0;

      // read the input 
      Scanner scan =  new Scanner(System.in);
      System.out.print("Enter an integer number:: ");
      number = scan.nextInt();

      // check the number is magic number or not
      if(isMagic(number))
      System.out.println(number+" is a"
        + " magic number");
      else
      System.out.println(number+" is not a"
              + " magic number");

      // close Scanner class object
      scan.close();
   }
}

Outputtet for de forskellige testcases er:-

Indtast et heltal::28
28 er et magisk tal

Indtast et helt tal::12345
12345 er ikke et magisk tal

Se også:- Specialnummer, Magisk nummer, Armstrong-nummer, Perfekt nummer, Evil Number, Spionnummer, Sunny-nummer i Java

Direkte tilgang

Summen af ​​cifre indtil et enkelt ciffer i Java kan også beregnes ved direkte at dividere tallet med 9. Hvis tallet er deleligt med 9, er det Summen af ​​cifre, indtil enkelt ciffer er 9, ellers er det tallet % 9 stærk>

import java.util.Scanner;

public class MagicNumber {

   // method to find digital sum
   public static boolean isMagic(int number) {
      if(number%9 == 1) return true;
      else return false;
   }

  public static void main(String[] args) {

      // declare variables
      int number = 0;

      // read the input 
      Scanner scan =  new Scanner(System.in);
      System.out.print("Enter an integer number:: ");
      number = scan.nextInt();

      // check the number is magic number or not
      if(isMagic(number))
        System.out.println(number+" is a"
            + " magic number");
      else
        System.out.println(number+" is not a"
              + " magic number");

      // close Scanner class object
      scan.close();
  }
}

Java-program til at finde alle magiske tal i det givne område

import java.util.Scanner;

public class MagicNumber {

  // method to find digital sum
  public static boolean isMagic(int number) {
      if(number%9 == 1) return true;
      else return false;
  }

  public static void main(String[] args) {

      // declare variables
      int minRange = 0;
      int maxRange = 0;

      // read the input 
      Scanner scan =  new Scanner(System.in);
      System.out.print("Enter min range:: ");
      minRange = scan.nextInt();
      System.out.print("Enter max range:: ");
      maxRange = scan.nextInt();

      // find all magic numbers
      System.out.println("The magic numbers"
          + " from "+minRange+" to "
         +maxRange+ " are: ");

      for(int i=minRange; i<maxRange; i++) {
         if(isMagic(i))
         System.out.print(i+"\t");
      }

      // close Scanner class object 
      scan.close();
   }
}

Outputtet for de forskellige testcases er:-

Indtast minimum interval::1
Indtast max interval::100
De magiske tal fra 1 til 100 er:
1 10 19 28 37 46 55 64 73 82 91

Indtast minimum interval::100
Indtast max interval::200
De magiske tal fra 100 til 200 er:
100 109 118 127 136 145 154 163 172 181 190 199

Indtast minimum interval::1000
Indtast max interval::1111
De magiske tal fra 1000 til 1111 er:
1000 1009 1018 1027 1036 1045 1054 1063 1072 1081 1090 1099 1108


Java tag