Java >> Tutoriel Java >  >> Java

Programme de nombres Kaprekar en Java

Dans cet article, nous développerons un programme Java pour vérifier que le numéro donné est un numéro kaprekar ou non. Plus tard, nous développerons également un programme Java pour trouver tous les nombres kaprekar dans la plage donnée.

Un nombre dont le carré est divisé en deux parties (aucune des parties n'a que 0) et la somme des parties est égale au nombre d'origine, il est alors appelé nombre de kaprekar. Le numéro kaprekar porte le nom de D. R. Kaprekar.

Exemple de nombres kaprekar :- 45
Le carré de 45 =2025
20 + 25 =45, donc 45 est un nombre kaprekar.

10, 100, 1000 ne sont pas un nombre kaprekar
10^2 =100 => 10 + 0=10
100^2 =10000 =100 + 00 =100
Mais la condition est aucune partie n'ayant que 0 , il ne s'agit donc pas du numéro kaprekar.

Procédure pour vérifier que le numéro donné est un numéro kaprekar ou non

1) Prenez un nombre.
2) Trouvez sa valeur au carré.
3) Comptez le nombre de chiffres dans le carré.
4) Prenez une variable itérative (i) à partir de number_of_digits_in_square – 1
5) Trouvez la première partie du nombre, en divisant la valeur carrée par 10^i
6) Trouvez la deuxième partie en calculant la valeur restante après avoir divisé 10^i
7) Vérifiez toute partie n'ayant que 0, si oui, sautez l'itération.
8) Calculez la somme des deux parties.
9) Comparez la somme et le nombre, si les deux sont égaux, le nombre donné est le nombre de kaprekar.

Le programme Java pour vérifier que le numéro est un numéro kaprekar ou non

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

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

Entrez un nombre entier ::45
45 est un nombre kaprekar

Entrez un nombre entier ::55
55 est un nombre kaprekar

Entrez un nombre entier ::25
25 n'est pas un nombre kaprekar

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 trouver tous les numéros kaprekar dans une plage donnée

En utilisant des boucles, nous pouvons également trouver tous les nombres de kaprekar dans une plage donnée. Le programme ci-dessous le démontre.

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

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

Entrez la valeur minimale de la plage : : 1
Entrez la valeur maximale de la plage : : 100
Les nombres kaprekar de 1 à 100 sont : :
9 45 55 99

Entrez la valeur minimale de la plage : 100
Entrez la valeur maximale de la plage : 100000
Les nombres kaprekar de 100 à 100000 sont : :
297 703 999 2223 2728 4879 4950 5050 5292 7272 7777 9999 17344 22222 38962


Balise Java