Add Kaprekar Numbers (#2881)

This commit is contained in:
s-devran
2021-12-15 17:55:04 +03:00
committed by GitHub
parent b1242e045b
commit 98656cb0cd
2 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,27 @@
package com.thealgorithms.maths;
public class KaprekarNumbers {
/* This program demonstrates if a given number is Kaprekar Number or not.
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
digits and sum of these parts is equal to the original number. */
// Checks whether a given number is Kaprekar Number or not
public static boolean isKaprekarNumber(long number) {
long numberSquared = number * number;
if(Long.toString(number).length() == Long.toString(numberSquared).length()){
return (number == numberSquared);
}
else{
long leftDigits1 = 0, leftDigits2 = 0;
if(Long.toString(numberSquared).contains("0")){
leftDigits1 = Long.parseLong(Long.toString(numberSquared).substring(0, Long.toString(numberSquared).indexOf("0")));
}
leftDigits2 = Long.parseLong(Long.toString(numberSquared).substring(0, (Long.toString(numberSquared).length() - Long.toString(number).length())));
long rightDigits = Long.parseLong(Long.toString(numberSquared).substring(Long.toString(numberSquared).length() - Long.toString(number).length()));
return (number == (leftDigits1 + rightDigits)) || (number == (leftDigits2 + rightDigits));
}
}
}

View File

@ -0,0 +1,58 @@
package com.thealgorithms.maths;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class KaprekarNumbersTest {
@Test
void testFor1()
{
assertTrue(KaprekarNumbers.isKaprekarNumber(1));
}
@Test
void testFor45()
{
assertTrue(KaprekarNumbers.isKaprekarNumber(45));
}
@Test
void testFor297()
{
assertTrue(KaprekarNumbers.isKaprekarNumber(297));
}
@Test
void testFor2223()
{
assertTrue(KaprekarNumbers.isKaprekarNumber(2223));
}
@Test
void testFor857143()
{
assertTrue(KaprekarNumbers.isKaprekarNumber(857143));
}
@Test
void testFor3()
{
assertFalse(KaprekarNumbers.isKaprekarNumber(3));
}
@Test
void testFor26()
{
assertFalse(KaprekarNumbers.isKaprekarNumber(26));
}
@Test
void testFor98()
{
assertFalse(KaprekarNumbers.isKaprekarNumber(98));
}
}