kotlin coding test course, find the minimum among prime & palindrome numbers

Problem Definition

Problem: Find the minimum palindromic prime number among all prime numbers within a given range.
A prime number is a natural number that has no divisors other than 1 and itself, while a palindromic number is a number that reads the same forwards and backwards.
The input consists of two integers A and B, representing the range from A to B inclusive.

Input Example

    Input: 10 100
    

Output Example

    Output: 101
    

Problem Solving Process

To solve this problem, I will approach it in the following steps.

Step 1: Implement Prime Check Function

First, I will implement a function to check for prime numbers. A prime number is a number that is only divisible by 1 and itself.
To determine if a number is prime, it’s sufficient to check for divisibility by all integers from 2 to √n.

    fun isPrime(num: Int): Boolean {
        if (num < 2) return false
        for (i in 2..Math.sqrt(num.toDouble()).toInt()) {
            if (num % i == 0) return false
        }
        return true
    }
    

Step 2: Implement Palindrome Check Function

Once the primality check is implemented, I will implement the palindrome check. This can be done by converting the number to a string
and checking if it is the same as its reverse.

    fun isPalindrome(num: Int): Boolean {
        val str = num.toString()
        return str == str.reversed()
    }
    

Step 3: Find Prime & Palindromic Numbers

I will check all integers in the given range from A to B, verifying if each number is both prime and a palindrome.

    fun findMinPalindromicPrime(A: Int, B: Int): Int? {
        var minValue: Int? = null
        for (num in A..B) {
            if (isPrime(num) && isPalindrome(num)) {
                if (minValue == null || num < minValue) {
                    minValue = num
                }
            }
        }
        return minValue
    }
    

Step 4: Integrate into Main Function

Finally, I will write the main function to call all of the above functions and output the result.
This will include taking user input and implementing the functionality to find the minimum value within the range.

    fun main() {
        val (A, B) = readLine()!!.split(" ").map { it.toInt() }
        val result = findMinPalindromicPrime(A, B)
        
        if (result != null) {
            println("Minimum palindromic prime: $result")
        } else {
            println("There are no palindromic primes in the given range.")
        }
    }
    

Summary

Now, let's summarize what we have implemented. The complete code is as follows.

    fun isPrime(num: Int): Boolean {
        if (num < 2) return false
        for (i in 2..Math.sqrt(num.toDouble()).toInt()) {
            if (num % i == 0) return false
        }
        return true
    }

    fun isPalindrome(num: Int): Boolean {
        val str = num.toString()
        return str == str.reversed()
    }

    fun findMinPalindromicPrime(A: Int, B: Int): Int? {
        var minValue: Int? = null
        for (num in A..B) {
            if (isPrime(num) && isPalindrome(num)) {
                if (minValue == null || num < minValue) {
                    minValue = num
                }
            }
        }
        return minValue
    }

    fun main() {
        val (A, B) = readLine()!!.split(" ").map { it.toInt() }
        val result = findMinPalindromicPrime(A, B)
        
        if (result != null) {
            println("Minimum palindromic prime: $result")
        } else {
            println("There are no palindromic primes in the given range.")
        }
    }
    

Conclusion

This article explained in detail how to determine primes and palindromes using Kotlin, and how to find the minimum value.
Such problem-solving techniques are often included in algorithm questions for job interviews, so practicing them would be beneficial.
Always try to solve various problems to continuously improve your skills.