mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-26 22:14:08 +08:00
Format code with prettier (#3375)
This commit is contained in:
@ -1,53 +1,68 @@
|
||||
package com.thealgorithms.maths;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
|
||||
public class KaprekarNumbers {
|
||||
|
||||
/* This program demonstrates if a given number is Kaprekar Number or not.
|
||||
/* 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. */
|
||||
|
||||
// Provides a list of kaprekarNumber in a range
|
||||
public static ArrayList<Long> kaprekarNumberInRange(long start, long end) throws Exception {
|
||||
long n = end-start;
|
||||
if (n <0) throw new Exception("Invalid range");
|
||||
ArrayList<Long> list = new ArrayList<>();
|
||||
// Provides a list of kaprekarNumber in a range
|
||||
public static ArrayList<Long> kaprekarNumberInRange(long start, long end)
|
||||
throws Exception {
|
||||
long n = end - start;
|
||||
if (n < 0) throw new Exception("Invalid range");
|
||||
ArrayList<Long> list = new ArrayList<>();
|
||||
|
||||
for (long i = start; i <= end; i++) {
|
||||
if (isKaprekarNumber(i)) list.add(i);
|
||||
}
|
||||
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 num) {
|
||||
String number = Long.toString(num);
|
||||
BigInteger originalNumber = new BigInteger(number);
|
||||
BigInteger numberSquared = originalNumber.multiply(originalNumber);
|
||||
if(number.length() == numberSquared.toString().length()){
|
||||
return number.equals(numberSquared.toString());
|
||||
}
|
||||
else{
|
||||
BigInteger leftDigits1 = new BigInteger("0");
|
||||
BigInteger leftDigits2;
|
||||
if(numberSquared.toString().contains("0")){
|
||||
leftDigits1 = new BigInteger(
|
||||
numberSquared.toString().
|
||||
substring(0, numberSquared.toString().indexOf("0")
|
||||
)
|
||||
);
|
||||
}
|
||||
leftDigits2 = new BigInteger(
|
||||
numberSquared.toString()
|
||||
.substring(0, (numberSquared.toString().length() - number.length()))
|
||||
);
|
||||
BigInteger rightDigits = new BigInteger(numberSquared.toString().substring(numberSquared.toString().length() - number.length()));
|
||||
String x = leftDigits1.add(rightDigits).toString();
|
||||
String y = leftDigits2.add(rightDigits).toString();
|
||||
return (number.equals(x)) || (number.equals(y));
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
// Checks whether a given number is Kaprekar Number or not
|
||||
public static boolean isKaprekarNumber(long num) {
|
||||
String number = Long.toString(num);
|
||||
BigInteger originalNumber = new BigInteger(number);
|
||||
BigInteger numberSquared = originalNumber.multiply(originalNumber);
|
||||
if (number.length() == numberSquared.toString().length()) {
|
||||
return number.equals(numberSquared.toString());
|
||||
} else {
|
||||
BigInteger leftDigits1 = new BigInteger("0");
|
||||
BigInteger leftDigits2;
|
||||
if (numberSquared.toString().contains("0")) {
|
||||
leftDigits1 =
|
||||
new BigInteger(
|
||||
numberSquared
|
||||
.toString()
|
||||
.substring(0, numberSquared.toString().indexOf("0"))
|
||||
);
|
||||
}
|
||||
leftDigits2 =
|
||||
new BigInteger(
|
||||
numberSquared
|
||||
.toString()
|
||||
.substring(
|
||||
0,
|
||||
(
|
||||
numberSquared.toString().length() -
|
||||
number.length()
|
||||
)
|
||||
)
|
||||
);
|
||||
BigInteger rightDigits = new BigInteger(
|
||||
numberSquared
|
||||
.toString()
|
||||
.substring(
|
||||
numberSquared.toString().length() - number.length()
|
||||
)
|
||||
);
|
||||
String x = leftDigits1.add(rightDigits).toString();
|
||||
String y = leftDigits2.add(rightDigits).toString();
|
||||
return (number.equals(x)) || (number.equals(y));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user