I am making this kata: https://www.codewars.com/kata/55de8eabd9bef5205e0000ba/train/java and one of the parts is to check that the prime digit will not be assessed as "emirp" if it is palindrome, I wanted to do that using SrtingBuilder reverse method:
public static Long reverseDigits(Long pNum) {
return Long.parseLong(new StringBuilder(String.valueOf(pNum)).reverse().toString());
}
But I got somewhat strange results; upon calling:
Set<Long> primes = possiblePrimesUnderBound(upperBound(n));
parseSolution(
primes.stream()
.filter(elem -> primes.contains(reverseDigits(elem)))
.filter(elem -> elem < n)
// important part start
.peek(elem -> System.out.println("before checking for palindromes: " + elem))
.filter(elem -> elem != reverseDigits(elem))
.peek(elem -> System.out.println("after checking for palindromes: " + elem))
// important part end
.collect(Collectors.toList())
);
I receive:
before checking for palindromes: 13
after checking for palindromes: 13
before checking for palindromes: 17
after checking for palindromes: 17
before checking for palindromes: 31
after checking for palindromes: 31
before checking for palindromes: 37
after checking for palindromes: 37
before checking for palindromes: 71
after checking for palindromes: 71
before checking for palindromes: 73
after checking for palindromes: 73
before checking for palindromes: 79
after checking for palindromes: 79
before checking for palindromes: 97
after checking for palindromes: 97
before checking for palindromes: 101 // check passes
before checking for palindromes: 107
after checking for palindromes: 107
before checking for palindromes: 113
after checking for palindromes: 113
before checking for palindromes: 131 // check fails
after checking for palindromes: 131
before checking for palindromes: 149
after checking for palindromes: 149
before checking for palindromes: 151 // check fails
after checking for palindromes: 151
before checking for palindromes: 157
after checking for palindromes: 157
before checking for palindromes: 167
after checking for palindromes: 167
before checking for palindromes: 179
after checking for palindromes: 179
before checking for palindromes: 181 // check fails
after checking for palindromes: 181
before checking for palindromes: 191 // check fails
after checking for palindromes: 191
before checking for palindromes: 199
after checking for palindromes: 199
For numbers below 200: notice that my check works for 101
but doesn't work for 131
, 151
, 181
, and 191
, Does anyone have a clue where I am making mistake?