Java >> Java tutorial >  >> Java

Kaprekar nummerprogram i Java

I dette indlæg vil vi udvikle et Java-program for at kontrollere, at det givne nummer er kaprekarnummer eller ej. Senere vil vi også udvikle et Java-program til at finde alle kaprekar-tallene i det givne område.

Et tal, hvis kvadrat er opdelt i to dele (ingen af ​​delene har kun 0), og summen af ​​delene er lig med det oprindelige tal, så kaldes det kaprekartal. Kaprekarnummeret er opkaldt efter D. R. Kaprekar.

Eksempel på kaprekartal:- 45
Kvadratet på 45 =2025
20 + 25 =45, så 45 er et kaprekartal.

10, 100, 1000 er ikke et kaprekartal
10^2 =100 => 10 + 0=10
100^2 =10000 =100 + 00 =100
Men betingelsen er ingen af ​​delene har kun 0 , så disse er ikke kaprekar-nummeret.

Procedure for at kontrollere, at det givne nummer er kaprekarnummer eller ej

1) Tag et tal.
2) Find dets kvadratværdi.
3) Tæl antallet af cifre i kvadratet.
4) Tag en iteratorvariabel (i) startende fra antal_cifre_i_kvadrat – 1
5) Find den første del af tallet ved at dividere kvadratværdien med 10^i
6) Find den anden del som den beregnende restværdi efter at have divideret 10^i
7) Kontroller enhver del, der kun har 0, hvis ja, så spring gentagelsen over.
8) Beregn summen af ​​begge dele.
9) Sammenlign sum og tal, hvis begge er lige så er det givne tal kaprekartal.

Java-program til at kontrollere nummeret er kaprekar nummer eller ej

import java.util.Scanner;

public class KaprekarNumber {

   public static boolean isKaprekar(int number) {

      // declare variables
      int square = 0;
      int temp = 0;
      int countDigits = 0;
      int firstPart = 0;
      int secondPart = 0;
      int sum = 0;

      // calculate square value of the number
      square = number * number;

      // count number of digits in the square
      temp =square;
      while(temp!=0) {
         countDigits++;
         temp /= 10; 
      }

      // divide square into two parts and 
      // check it's sum is equal to the number?
      for(int i=countDigits-1; i>0; i--) {

         // find first part
         firstPart = square / (int)Math.pow(10, i);
         // find second part
         secondPart = square % (int)Math.pow(10, i);

         // check have any part only 0
         if(firstPart == 0 || secondPart == 0)
         	continue;
         // find sum value
         sum = firstPart + secondPart;

         // compare sum and number
         if( sum == number )
         return true;
      }
      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 kaprekar number or not
      if(isKaprekar(number))
      System.out.println(number+" is a"
		    	+ " kaprekar number");
      else
      System.out.println(number+" is not a"
	      	  	+ " kaprekar number");

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

Output for de forskellige test-cases:-

Indtast et heltal::45
45 er et kaprekartal

Indtast et heltal::55
55 er et kaprekartal

Indtast et heltal::25
25 er ikke et kaprekartal

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

Java-program til at finde alle kaprekar-numre i et givet område

Ved hjælp af loops kan vi også finde alle kaprekar-tallene i et givet område. Nedenstående program demonstrerer det.

import java.util.Scanner;

public class KaprekarNumberInRange {

  public static boolean isKaprekar(int number) {

     // declare variables
     int square = 0;
     int temp = 0;
     int countDigits = 0;
     int firstPart = 0;
     int secondPart = 0;
     int sum = 0;

     // calculate square value of the number
     square = number * number;

     // count number of digits in the square
     temp =square;
     while(temp!=0) {
        countDigits++;
        temp /= 10; 
     }

     // divide square into two parts and 
     // check it's sum is equal to the number?
     for(int i=countDigits-1; i>0; i--) {

        // find first part
        firstPart = square / (int)Math.pow(10, i);
        // find second part
        secondPart = square % (int)Math.pow(10, i);

        // check have any part only 0
        if(firstPart == 0 || secondPart == 0)
        continue;

        // find sum value
        sum = firstPart + secondPart;

        // compare sum and number
        if( sum == number )
        return true;
     }
     return false;
  }

  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 kaprekar numbers from "+
          minRange+" to "+ maxRange+" are:: ");

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

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

Output for de forskellige test-cases:-

Indtast min. værdi for område::1
Indtast maks. værdi for område::100
Kaprekar-tallene fra 1 til 100 er::
9 45 55 99

Indtast min. værdi for område::100
Indtast maks. værdi for område::100.000
Kaprekar-tallene fra 100 til 100.000 er::
297 703 999 2223 2728 4879 4950 5050 5292 7272 7777 9999 17344 22222 38962


Java tag