From a0a392297e94a86c03873f82d745cceba250c656 Mon Sep 17 00:00:00 2001 From: Subhro Acharjee <88422396+subhroblkbox@users.noreply.github.com> Date: Sat, 8 Jan 2022 01:20:32 +0530 Subject: [PATCH] Add kaprekarNumberInRange (#2894) Co-authored-by: Andrii Siriak --- .../thealgorithms/maths/KaprekarNumbers.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java b/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java index c922ab25d..d03854b8d 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<>(); - public static boolean isKaprekarNumber(long number) { + for (long i = start; i <= end; i++) { + if (isKaprekarNumber(i)) list.add(i); + } + + 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"))); }