mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-07 01:35:16 +08:00
Add Kaprekar Numbers (#2881)
This commit is contained in:
27
src/main/java/com/thealgorithms/maths/KaprekarNumbers.java
Normal file
27
src/main/java/com/thealgorithms/maths/KaprekarNumbers.java
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user