w3resource

Kotlin recursive function: Check prime number


Write a Kotlin recursive function to check if a number is a prime number.


Pre-Knowledge (Before You Start!)

Before solving this exercise, you should understand these concepts:

  • Prime Number: A number greater than 1 that has no divisors other than 1 and itself.
  • Recursive Function: A function that calls itself with modified arguments to break down a problem.
  • Base Case: A condition where recursion stops to prevent infinite loops.
  • Efficient Prime Check: A number is prime if it is not divisible by any integer from 2 to its square root.

Hints (Try Before Looking at the Solution!)

Here are some hints to help you solve the problem:

  • Hint 1: A prime number has exactly two divisors: 1 and itself.
  • Hint 2: The base case should return false if n <= 1.
  • Hint 3: If current * current > n, then n is prime.
  • Hint 4: If n is divisible by current, it is not a prime number.
  • Hint 5: Use recursion to test divisibility by incrementing current until it reaches the square root of n.

Sample Solution:

Kotlin Code:

fun isPrime(n: Int, current: Int = 2): Boolean {
    if (n <= 1) {
        return false
    }

    if (current * current > n) {
        return true
    }

    if (n % current == 0) {
        return false
    }

    return isPrime(n, current + 1)
}

fun main() {
    val number = 37
    //val number = 38
    val isPrimeNumber = isPrime(number)
    val message = if (isPrimeNumber) "is a prime number." else "is not a prime number."
    println("$number $message")
}

Sample Output:

37 is a prime number.
38 is not a prime number.

Explanation:

In the above exercise -

The "isPrime()" function takes two parameters: n (the number to check for primality) and current (the current divisor being tested, initialized to 2).

To determine whether n is prime, the function uses recursion. It follows the following steps:

  • Since prime numbers are greater than 1, it returns false if n is less than or equal to 1.
  • If the square of current is greater than n, it means we have tested all possible divisors up to the square root of n, and none of them divided n evenly. Thus, n is a prime number, and the function returns true.
  • If n is divisible evenly by the current divisor, it means n is not a prime number. The function returns false.
  • Otherwise, it calls itself recursively with the same n but increments the current divisor by 1.

In the "main()" function, we define number's value as 37 to check if it's a prime number. We call the "isPrime()" function with this number and store the result in the isPrimeNumber variable. The result is then printed to the console.

Go to:


PREV : Find the nth term of arithmetic sequence.
NEXT : Print even numbers from an array.

Kotlin Editor:


Improve this sample solution and post your code through Disqus

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.