Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions KapreKar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// Java program to check if a number is
// Kaprekar number or not

class KapreKar
{
// Returns true if n is a Kaprekar number, else false
static boolean iskaprekar(int n)
{
if (n == 1)
return true;

// Count number of digits in square
int sq_n = n * n;
int count_digits = 0;
while (sq_n != 0)
{
count_digits++;
sq_n /= 10;
}

sq_n = n*n; // Recompute square as it was changed

// Split the square at different poitns and see if sum
// of any pair of splitted numbers is equal to n.
for (int r_digits=1; r_digits<count_digits; r_digits++)
{
int eq_parts = (int) Math.pow(10, r_digits);

// To avoid numbers like 10, 100, 1000 (These are not
// Karprekar numbers
if (eq_parts == n)
continue;

// Find sum of current parts and compare with n
int sum = sq_n/eq_parts + sq_n % eq_parts;
if (sum == n)
return true;
}

// compare with original number
return false;
}

// Driver method
public static void main (String[] args)
{
System.out.println("Printing first few Kaprekar Numbers" +
" using iskaprekar()");

for (int i=1; i<10000; i++)
if (iskaprekar(i))
System.out.print(i + " ");
}
}