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