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