Skip to content

Commit 98656cb

Browse files
authored
Add Kaprekar Numbers (TheAlgorithms#2881)
1 parent b1242e0 commit 98656cb

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.thealgorithms.maths;
2+
3+
public class KaprekarNumbers {
4+
5+
/* This program demonstrates if a given number is Kaprekar Number or not.
6+
Kaprekar Number: A Kaprekar number is an n-digit number which its square can be split into two parts where the right part has n
7+
digits and sum of these parts is equal to the original number. */
8+
9+
// Checks whether a given number is Kaprekar Number or not
10+
11+
public static boolean isKaprekarNumber(long number) {
12+
long numberSquared = number * number;
13+
if(Long.toString(number).length() == Long.toString(numberSquared).length()){
14+
return (number == numberSquared);
15+
}
16+
else{
17+
long leftDigits1 = 0, leftDigits2 = 0;
18+
if(Long.toString(numberSquared).contains("0")){
19+
leftDigits1 = Long.parseLong(Long.toString(numberSquared).substring(0, Long.toString(numberSquared).indexOf("0")));
20+
}
21+
leftDigits2 = Long.parseLong(Long.toString(numberSquared).substring(0, (Long.toString(numberSquared).length() - Long.toString(number).length())));
22+
long rightDigits = Long.parseLong(Long.toString(numberSquared).substring(Long.toString(numberSquared).length() - Long.toString(number).length()));
23+
return (number == (leftDigits1 + rightDigits)) || (number == (leftDigits2 + rightDigits));
24+
}
25+
}
26+
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.thealgorithms.maths;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
public class KaprekarNumbersTest {
8+
9+
@Test
10+
void testFor1()
11+
{
12+
assertTrue(KaprekarNumbers.isKaprekarNumber(1));
13+
}
14+
15+
@Test
16+
void testFor45()
17+
{
18+
assertTrue(KaprekarNumbers.isKaprekarNumber(45));
19+
}
20+
21+
@Test
22+
void testFor297()
23+
{
24+
assertTrue(KaprekarNumbers.isKaprekarNumber(297));
25+
}
26+
27+
@Test
28+
void testFor2223()
29+
{
30+
assertTrue(KaprekarNumbers.isKaprekarNumber(2223));
31+
}
32+
33+
@Test
34+
void testFor857143()
35+
{
36+
assertTrue(KaprekarNumbers.isKaprekarNumber(857143));
37+
}
38+
39+
40+
@Test
41+
void testFor3()
42+
{
43+
assertFalse(KaprekarNumbers.isKaprekarNumber(3));
44+
}
45+
46+
@Test
47+
void testFor26()
48+
{
49+
assertFalse(KaprekarNumbers.isKaprekarNumber(26));
50+
}
51+
52+
@Test
53+
void testFor98()
54+
{
55+
assertFalse(KaprekarNumbers.isKaprekarNumber(98));
56+
}
57+
58+
}

0 commit comments

Comments
 (0)