object PalindromeChecker {
// Function to check if a number is a palindrome in a given base
def isPalindrome(num: Int, base: Int): Boolean = {
if (base < 2) return false // Invalid base
val strnumReversed = new StringBuilder
var temp = num
// Convert number to string in given base
do {
val digit = temp % base
strnumReversed += (if (digit < 10) ('0' + digit).toChar else ('A' + (digit - 10)).toChar)
temp /= base
} while (temp > 0)
// Check palindrome
strnumReversed.toString() == strnumReversed.reverse.toString()
}
def main(args: Array[String]): Unit = {
val limit = 1000
println("Numbers that are palindromes in both base 10 and base 2:")
for (i <- 1 to limit) {
if (isPalindrome(i, 10) && isPalindrome(i, 2)) {
print(s"$i (binary: ")
// Print binary representation
val binary = new StringBuilder
var temp = i
do {
binary += (if (temp % 2 == 1) '1' else '0')
temp /= 2
} while (temp > 0)
val binaryStr = binary.reverse.toString()
println(s"$binaryStr)")
}
}
}
}
/*
run:
Numbers that are palindromes in both base 10 and base 2:
1 (binary: 1)
3 (binary: 11)
5 (binary: 101)
7 (binary: 111)
9 (binary: 1001)
33 (binary: 100001)
99 (binary: 1100011)
313 (binary: 100111001)
585 (binary: 1001001001)
717 (binary: 1011001101)
*/