Java >> Tutoriel Java >  >> Java

Programme de nombres automorphes en Java

Dans cet article, nous développerons un programme de nombres automorphes en Java. Dans un premier temps, nous apprendrons quel est le nombre automorphe puis nous verrons quelles sont les différentes manières de vérifier si le nombre est un nombre automorphe ou non.

En mathématiques, un nombre est appelé un nombre automorphe si le carré du nombre se termine par le même nombre. Des exemples de nombres automorphes sont :- 5, 6, 25, 76, etc.

Le carré de 6 =36
Le nombre 36 se termine par 6 donc c'est un nombre automorphe.

De même, le carré du nombre 76 =5776
Ici le 5776 se termine par 76 donc 76 est un nombre automorphe.

Il existe deux façons de vérifier que le nombre donné est un nombre automorphe ou non
1) En utilisant une chaîne
2) Sans utiliser une chaîne

La première façon, c'est-à-dire l'utilisation d'une chaîne, est très simple, nous en discuterons donc plus tard. Tout d'abord, nous allons développer le programme sans utiliser les méthodes prédéfinies de la classe String.

Procédure

Procédure pour développer la méthode pour vérifier que le nombre est automorphe ou non sans utiliser les méthodes de classe de chaîne,

  1. Prenez un numéro
  2. Calculer son carré et le stocker dans une variable
  3. Trouver le dernier chiffre d'un nombre et d'un carré
  4. Comparez les deux derniers chiffres
    • S'ils ne sont pas identiques, il ne s'agit pas d'un nombre automorphe.
    • S'ils sont identiques, passez à l'étape suivante
  5. Supprimer le dernier chiffre du nombre et du carré
  6. Répétez les étapes 4 à 6 jusqu'à ce que le nombre devienne 0
  7. Toutes les étapes précédentes se sont terminées avec succès, donc le nombre est un nombre automorphe
// checks number is automorphic number or not
// without using String class methods
public static boolean isAutomorphic(int num) {

   // declare variables
   int square = num*num;
   int lastDigitOfNumber = 0, lastDigitOfSquare = 0;

   // traverse all digits of number
   // and compare it with square
   while(num != 0) {

      // find last digit
      lastDigitOfNumber = num % 10;
      lastDigitOfSquare = square % 10;

      // compare both last digit
      if(lastDigitOfNumber != lastDigitOfSquare)
          return false;

      // remove last digit
      num /= 10;
      square /= 10;
   }

   return true;
}

Le code ci-dessus peut sembler lourd pour vous, mais nous réduisons le nombre de lignes. Nous pouvons trouver le dernier chiffre et comparer le chiffre sur une ligne. La méthode ci-dessous le démontre,

Programme de nombres automorphes en Java utilisant la boucle while

// checks number is automorphic number or not
// without using String class methods
public static boolean isAutomorphic(int num) {
   int square = num*num;

   // traverse all digits of number
   // and compare it with square
   while(num != 0) {

      // find last digit and
      // compare both last digit
      if((num % 10) != (square % 10))
          return false;

      // remove last digit
      num /= 10;
      square /= 10;
   }

   return true;
}

Programme de nombres automorphes en Java utilisant la boucle for

public static boolean isAutomorphic(int num) {

  for(int square = num*num; num!=0; num/=10, square/=10)
     if((num % 10) != (square % 10))
          return false;

  return true;
}

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

Programme Java pour vérifier les nombres automorphes sans chaîne

Sur la base des méthodes décrites ci-dessus, nous allons écrire un programme Java pour vérifier que le nombre est un nombre automorphe ou non. Nous utiliserons la boucle while car elle est simplifiée par rapport à la boucle for et tout le monde peut comprendre.

import java.util.Scanner;

public class AutomorphicNumber {

   // Checks number is automorphic number or not
   // without using String class methods
   public static boolean isAutomorphic(int num) {
      int square = num*num;

      // traverse all digits of number
      // and compare it with square
      while(num != 0) {

         // find last digit and
         // compare both last digit
         if((num % 10) != (square % 10))
            return false;

         // remove last digit
         num /= 10;
         square /= 10;
      }

      return true;
   }

   public static void main(String[] args) {
      // declare variables
      int number = 0;
      boolean result = false;

      //create Scanner class object to take input
      Scanner scan = new Scanner(System.in);

      // take input from end-user
      System.out.print("Enter an integer number:: ");
      number = scan.nextInt();

      // check number is Automorphic number or not
      result = isAutomorphic(number);
      if(result)
          System.out.println(number +
                  " is an Automorphic number.");
      else
          System.out.println(number +
                  " is not an Automorphic number");
      // close Scanner class object
      scan.close();
   }
}

La sortie de différents cas de test :-

Entrez un nombre entier ::5
5 est un nombre automorphe.

Entrez un nombre entier ::7
7 n'est pas un nombre automorphe

Entrez un nombre entier ::25
25 est un nombre automorphe.

Utiliser une chaîne

Dans ce cas, convertissez les deux nombres et la valeur au carré du nombre dans la chaîne en utilisant toString() méthode.

// convert numbers to string
String str_num = Integer.toString(num);
String str_square = Integer.toString(num*num);

Maintenant, en utilisant endswith() méthode de la classe de chaîne vérifie que la chaîne str_square se termine par str_num ou non ? Si oui, alors le nombre donné est un nombre automorphe, sinon ce n'est pas un nombre automorphe.

if(str_square.endsWith(str_num)) 
   return true; // automorphic number
else 
   return false; // not an automorphic number

Le programme ci-dessous le démontre,

import java.util.Scanner;

public class AutomorphicNumberUsingString {

   // Checks number is automorphic number or not
   // using String 
   public static boolean isAutomorphic(int num) {

      // convert numbers to string
      String str_num = Integer.toString(num);
      String str_square = Integer.toString(num*num);

      // check endWith 
      if(str_square.endsWith(str_num)) 
          return true;

      return false;
   }

   public static void main(String[] args) {

      // declare variables
      int number = 0;
      boolean result = false;

      //create Scanner class object to take input
      Scanner scan = new Scanner(System.in);

      // take input from end-user
      System.out.print("Enter an integer number:: ");
      number = scan.nextInt();

      // check number is Automorphic number or not
      result = isAutomorphic(number);
      if(result)
          System.out.println(number +
                  " is an Automorphic number.");
      else
          System.out.println(number +
                  " is not an Automorphic number");

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

Programme Java pour le nombre automorphe dans une plage

Nous pouvons trouver tous les nombres automorphes qui appartiennent à une plage donnée, pour cela nous demanderons la valeur minimale et maximale de la plage à l'utilisateur final.

import java.util.Scanner;

public class AutomorphicNumberInRange {

   // Checks number is automorphic number or not
   public static boolean isAutomorphic(int num) {

      for(int square=num*num;num!=0;num/=10,square/=10)
          if((num % 10) != (square % 10)
              return false;

      return true;
   }

   public static void main(String[] args) {

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

      // create Scanner class object
      Scanner scan = new Scanner(System.in);

      // read inputs
      System.out.print("Enter min value of range:: ");
      minRange = scan.nextInt();
      System.out.print("Enter max value of range:: ");
      maxRange = scan.nextInt();

      // check number 
      System.out.println("The Automorphic numbers from "+
              minRange+" to "+ maxRange+" are:: ");

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

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

La sortie de différents cas de test :-

Entrez la valeur min de la plage ::1
Entrez la valeur max de la plage ::100
Les nombres automorphes de 1 à 100 sont : :
1 5 6 25 76

Entrez la valeur min de la plage ::100
Entrez la valeur max de la plage ::100000
Les nombres automorphes de 100 à 100000 sont : :
376 625 9376


Balise Java