LeetCode in Kotlin

3918. Sum of Primes Between Number and Its Reverse

Medium

You are given an integer n.

Let r be the integer formed by reversing the digits of n.

Return the sum of all prime numbers between min(n, r) and max(n, r), inclusive.

Example 1:

Input: n = 13

Output: 132

Explanation:

Example 2:

Input: n = 10

Output: 17

Explanation:

Example 3:

Input: n = 8

Output: 0

Explanation:

Constraints:

Solution

import kotlin.math.max
import kotlin.math.min

class Solution {
    private fun isPrime(x: Int): Boolean {
        if (x <= 1) {
            return false
        }
        if (x == 2) {
            return true
        }
        if (x % 2 == 0) {
            return false
        }
        var i = 3
        while (i * i <= x) {
            if (x % i == 0) {
                return false
            }
            i += 2
        }
        return true
    }

    private fun reverseNum(n: Int): Int {
        var n = n
        var r = 0
        while (n > 0) {
            r = r * 10 + (n % 10)
            n /= 10
        }
        return r
    }

    fun sumOfPrimesInRange(n: Int): Int {
        val r = reverseNum(n)
        val low = min(n, r)
        val high = max(n, r)
        var sum = 0
        for (i in low..high) {
            if (isPrime(i)) {
                sum += i
            }
        }
        return sum
    }
}