Kotlin Program to Express Number as Sum of Two Prime Numbers

Write a Kotlin Program to Express number as Sum of Two Prime Numbers

For example,

Input:
13

Output:
2 + 11
Input:
20

Output:
3 + 17
7 + 13

20 can be expressed as sum of (3 and 17) or (7 and 13).

Input:
4

Output:
2 + 2

Similarly, there is possibility for other numbers as well to be expressed as sum of two primes.

1. Program to Express as Sum of Two Prime Numbers

Pseudo Algorithm –
  • For any value n, run a loop from 2 to n/2.
  • Check if i is prime or not.
  • If yes, check if n-i is prime or not. If yes, n can be expressed as sum of i and (n-i).
  • If no, continue for other value of i.

Sourcecode –

import java.util.*
import kotlin.math.sqrt

fun main() {
    val read = Scanner(System.`in`)

    println("Enter n:")
    val n = read.nextInt()

    if(n < 4) {
        println("$n can not be expressed as sum of two primes")
    } else {
        println("$n as sum of two primes: ")
        for(i in 2..(n/2)) {
            if(isPrime(i) && isPrime(n-i)) {
                print("$n = $i + " + (n-i) + "\n")
            }
        }
    }
}

private fun isPrime(n: Int): Boolean {

    // Number less than or equal 1 is not prime
    if(n <= 1)
        return false

    // 2 is only even prime number
    if(n == 2)
        return true

    // Check if number (> 2) is even. If yes, it is not prime.
    if(n % 2 == 0)
        return false

    var flag = true

    val root  = sqrt(n.toDouble()).toInt()

    // We need to check till square root of n only to find whether n is prime.
    for(i in 3..root step 2) {
        if((n % i) == 0) {
            flag = false
            break
        }
    }

    return flag
}

When you run the program, output will be –

Enter n:
50
50 as sum of two primes: 
50 = 3 + 47
50 = 7 + 43
50 = 13 + 37
50 = 19 + 31
Explanation:

Here, we have created an object of Scanner. Scanner takes an argument which says where to take input from.
System.`in` means take input from standard input – Keyboard.

read.nextIn() means read anything entered by user before space or line break from standard input – Keyboard.

Store value read by nextInt() in variable n.

Then,

  • Check if n is less than 4. If yes, then, it can not be expressed as sum of two primes. we have only two prime numbers, (2 and 3) whose sum is 5, below 4.
  • If it is greater than or equal to 4, then we run a loop from 2 to n/2.
  • We then check if i and (n-i) are primes or not. If yes, n can be expressed as sum of i and n-i.

Let’s take an example,
n = 5

n > 4. So, else block will be executed.

Now, run a loop from 2 to 2 (5/2 = 2).

At i = 2,

  • We check if 2 is prime or not. Since 2 is prime, we check if 5-2 (= 3) is prime or not.
  • Since 3 is prime, 5 can be expressed as sum of two primes: 2 + 3

Thus, we went through Kotlin program to express a number as sum of two prime numbers

Leave a Reply