Java >> Java tutorial >  >> Java

Automorfisk nummerprogram i Java

I dette indlæg vil vi udvikle et automorfisk talprogram i Java. Først vil vi lære, hvad det automorfe tal er, og derefter vil vi se, hvad der er de forskellige måder at kontrollere, at tallet er et automorfisk tal eller ej.

I matematik kaldes et tal for et automorfisk tal, hvis kvadratet på tallet ender med det samme tal. Eksempler på automorfe tal er:- 5, 6, 25, 76, osv.

Kvadratet på 6 =36
Tallet 36 slutter med 6, så det er et automorft tal.

På samme måde er kvadratet af tallet 76 =5776
Her slutter 5776 med 76, så 76 er et automorft tal.

Der er to måder at kontrollere, at det givne tal er et automorfisk tal eller ej
1) Ved at bruge streng
2) Uden at bruge streng

Den første måde, dvs. at bruge streng, er meget enkel, så vi vil diskutere det senere. Først vil vi udvikle programmet uden at bruge foruddefinerede metoder i String-klassen.

Procedure

Procedure for at udvikle metoden til at kontrollere antallet er automorf eller ej uden brug af strengklassemetoder,

  1. Tag et nummer
  2. Beregn dens kvadrat og gem den i en variabel
  3. Find det sidste ciffer i tal og kvadrat
  4. Sammenlign begge sidste cifre
    • Hvis de ikke er ens, er de ikke et automorfisk tal.
    • Hvis de er ens, så gå til næste trin
  5. Fjern det sidste ciffer i tal og kvadrat
  6. Gentag trin 4 til 6, indtil tallet bliver 0
  7. Alle foregående trin er gennemført med succes, så nummeret er et automorfisk tal
// 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;
}

Ovenstående kode kan ligne tung kode for dig, men vi reducerer antallet af linjen. Vi kan finde det sidste ciffer og sammenligne cifferet på én linje. Nedenstående metode viser det,

Automorfisk nummerprogram i java ved hjælp af while loop

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

Automorfisk nummerprogram i java ved hjælp af for loop

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

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

Java-program til at kontrollere automorfe tal uden streng

Baseret på de ovenfor diskuterede metoder vil vi skrive et Java-program for at kontrollere, om tallet er et automorfisk tal eller ej. Vi vil bruge while-løkken, fordi den er forenklet med hensyn til for loop, og alle kan forstå.

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

Output af forskellige testcases:-

Indtast et heltal::5
5 er et automorfisk tal.

Indtast et heltal::7
7 er ikke et automorfisk tal

Indtast et heltal::25
25 er et automorfisk tal.

Brug af streng

I dette tilfælde skal du konvertere både tal og kvadratværdien af ​​tallet til strengen ved hjælp af toString() metode.

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

Brug nu endswith() metode til streng klasse kontrollere strengen str_square er ender med str_num eller ej? Hvis ja, er det givne tal et automorfisk tal, ellers er det ikke et automorfisk tal.

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

Nedenstående program demonstrerer det,

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

Java-program for det automorfe tal i et område

Vi kan finde alle automorfe tal, der hører til et givet område, til dette formål vil vi spørge slutbrugeren om minimums- og maksimumværdien af ​​området.

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

Output af forskellige test-cases:-

Indtast min. værdi for interval::1
Indtast maksimumværdi for interval::100
De automorfe tal fra 1 til 100 er::
1 5 6 25 76

Indtast min. værdi for interval::100
Indtast maks. værdi for interval::100000
De automorfe tal fra 100 til 100000 er::
376 625 9376


Java tag