diff --git a/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java b/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java index c922ab25d8cc..d03854b8dc94 100644 --- a/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java +++ b/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java @@ -1,4 +1,5 @@ package com.thealgorithms.maths; +import java.util.*; public class KaprekarNumbers { @@ -6,15 +7,27 @@ public class KaprekarNumbers { 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 + // Provides a list of kaprekarNumber in a range + public static ArrayList kaprekarNumberInRange(long start, long end) throws Exception { + long n = end-start; + if (n <0) throw new Exception("Invalid range"); + ArrayList list = new ArrayList<>(); + + for (long i = start; i <= end; i++) { + if (isKaprekarNumber(i)) list.add(i); + } - public static boolean isKaprekarNumber(long number) { + return list; + } + + // 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; + long leftDigits1 = 0, leftDigits2; if(Long.toString(numberSquared).contains("0")){ leftDigits1 = Long.parseLong(Long.toString(numberSquared).substring(0, Long.toString(numberSquared).indexOf("0"))); }