JB Header
Java Program to check for Automorphic Number
This tutorial shows how to write Java program to check whether given number is automorphic number(or circular number) or not. Tutorial first explains what is an automorphic number. It then provides two Java programs to check for automorphic number. First program checks for automorphic number after converting the number and its square to string format. The second Java program relies on division\remainder based logic for automorphic number determination. What is an automorphic number An automorphic number(aka circular number) is a number which when squared ends with the same digits as that in the original number. Let us take a few examples of automorphic numbers to understand better.
Examples of automorphic numbers
  • 1  [ 12 = 1 ]
  • 5  [ 52 = 25 ]
  • 6  [ 62 = 36 ]
  • 25  [ 252 = 625 ]
  • 76  [ 762 = 5776 ].... and so on
Java program using string-based logic for automorphic number check
Java program using string-based logic for automorphic number check
package com.javabrahman.generaljava;

import java.util.Scanner;
public class AutomorphicNumber {
  public static void main(String args[]) {
    //Input number to be tested
    System.out.print("Enter number to be tested:");
    Scanner scanner = new Scanner(System.in);
    int inputNo = scanner.nextInt();
    
    //Convert the input number and its square to string
    String inputNoStr = String.valueOf(inputNo);
    String squaredrStr = String.valueOf(inputNo * inputNo);
    
    //Check if the squared no's string ends with input no
    if (squaredrStr.endsWith(inputNoStr)) {
      System.out.println(inputNo + " is an automorphic number");
    } else {
      System.out.println(inputNo + " is NOT an automorphic number");
    }
  }
}
 OUTPUT of the above code
Enter number to be tested: 5
5 is an automorphic number
Enter number to be tested: 9 9 is NOT an automorphic number
Enter number to be tested: 76 76 is an automorphic number
Explanation of the code
  • In the main() method of AutomorphicNumber class first the number to be checked is input from console using Scanner.nextInt(), and stored in an int variable named inputNo.
  • Then the number and its square are both converted to String format using String.valueOf() method.
  • Lastly, the condition for inputNo being an automorphic number is checked by finding whether the string containing square of inputNo ends with inputNo string value. If true, then the number is determined to be an automorphic number, else, the number is NOT an automorphic number.
  • A few runs of the program are shown in output with input numbers checked being 5, 9 and 76.
Java program for numerical logic based automorphic number determination
Java program for division/remainder logic based automorphic number determination
package com.javabrahman.generaljava;

import java.util.Scanner;

public class AutomorphicNum {
  public static void main(String args[]) {
    //Input number to be tested
    System.out.print("Enter number to be tested:");
    Scanner scanner = new Scanner(System.in);
    int inputNo = scanner.nextInt();

    //Find the number of digits in input number
    int noOfDigits=0;
    int copyOfInput=inputNo;
    while(copyOfInput!=0){
      copyOfInput=copyOfInput/10;
      noOfDigits++;
    }

    //Square the inputNo and get last 'n' digits of squared value
    //where 'n' = no of digits in inputNo = noOfDigits
    int lastNDigits=(int)((inputNo*inputNo)%(Math.pow(10,noOfDigits)));

    //Check if lastNDigits equals inputNo
    if (lastNDigits==inputNo) {
      System.out.println(inputNo + " is an automorphic number");
    } else {
      System.out.println(inputNo + " is NOT an automorphic number");
    }
  }
}
 OUTPUT of the above code
Enter number to be tested: 5
5 is an automorphic number
Enter number to be tested: 9 9 is NOT an automorphic number
Enter number to be tested: 76 76 is an automorphic number
Explanation of the code
  • In the main() method of AutomorphicNum class first the number to be checked is input from console using Scanner.nextInt(), and stored in an int variable named inputNo.
  • Then the number of digits in the inputNo is determined using a while loop. In while loop a copy of inputNo is progressively divided by 10, and the count of iterations required for the number to become 0 is determined. This count of iterations, stored in a variable named noOfDigits, is the number of digits in the inputNo.
  • Next, the square of inputNo is applied the modulus(% or remainder) operator with the divisor being 10 raised to the power noOfDigits. The power-of is done using Math.pow() method.
  • What the remainder operation does is that it extracts as a remainder exactly the same number of digits as that in inputNo. This extracted number is then stored in a variable named lastNDigits.
  • We now have the inputNo and the extracted number(lastNDigits) from squared inputNo. To check for inputNo being automorphic we simply check whether inputNo equals lastNDigits or not.
  • A few runs of the program are shown in output with input numbers checked being 5, 9 and 76.