Java >> Tutoriel Java >  >> Java

Programme de nombres magiques en Java

En programmation informatique, le terme nombre magique a plusieurs significations. Dans cet article, nous discuterons du nombre magique et développerons également un programme Java pour vérifier que le nombre donné est un nombre magique ou non.

Un nombre est dit être un nombre magique si la somme de ses chiffres est calculée jusqu'à un seul chiffre de manière récursive en ajoutant la somme des chiffres après chaque addition. Si le chiffre unique est 1, alors le nombre est un nombre magique. Des exemples de nombres magiques sont :- 10, 19, 28, 55, 1234 etc.

1054 =1 + 0 + 5 + 4 =10 (C'est un nombre à 2 chiffres, donc trouvez à nouveau la somme des chiffres)
10 =1 + 0 =1 (enfin la somme des chiffres est 1)
D'où 1054 est un nombre magique.

De même,
25417 =2 + 5 + 4 + 1 + 7 =19 (Puisque c'est un nombre à deux chiffres)
19 =1 + 9 =10 (Encore une fois c'est un nombre à deux chiffres)
10 =1 + 0 =1 (enfin la somme des chiffres est 1)
D'où 25417 est un nombre magique.

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

La sortie pour les différents cas de test est :-

Entrez un nombre entier ::28
28 est un nombre magique

Entrez un nombre entier ::12345
12345 n'est pas un nombre magique

Voir également :- Numéro spécial, Numéro magique, Numéro Armstrong, Numéro parfait, Numéro maléfique, Numéro espion, Numéro ensoleillé en Java

Approche directe

La somme des chiffres jusqu'à un seul chiffre en Java peut également être calculée en divisant directement le nombre par 9. Si le nombre est divisible par 9, c'est la somme des chiffres jusqu'à ce qu'un seul chiffre soit 9, sinon c'est le nombre % 9

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

Programme Java pour trouver tous les nombres magiques dans la plage donnée

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

La sortie pour les différents cas de test est :-

Entrez la plage min : 1
Entrez la plage max : 100
Les nombres magiques de 1 à 100 sont :
1 10 19 28 37 46 55 64 73 82 91

Entrez la plage min : 100
Entrez la plage max : 200
Les nombres magiques de 100 à 200 sont :
100 109 118 127 136 145 154 163 172 181 190 199

Entrez la plage min : 1000
Entrez la plage max : 1111
Les nombres magiques de 1000 à 1111 sont :
1000 1009 1018 1027 1036 1045 1054 1063 1072 1081 1090 1099 1108


Balise Java