How to find two prime numbers that, when concatenated, form another prime number in Scala

1 Answer

0 votes
object PrimeConcat {

  def isPrime(n: Long): Boolean = {
    if (n < 2) return false
    if (n % 2 == 0 && n != 2) return false

    var i = 3L
    while (i * i <= n) {
      if (n % i == 0) return false
      i += 2
    }
    true
  }

  // Concatenate two integers
  def concat(a: Int, b: Int): Long = {
    val s = a.toString + b.toString
    s.toLong
  }

  def main(args: Array[String]): Unit = {
    val limit = 12 // you can increase this
    val primes: Seq[Int] = (2 to limit).filter(isPrime(_))

    // Check pairs
    for {
      (p1, i) <- primes.zipWithIndex
      (p2, j) <- primes.zipWithIndex
      if i != j
      num = concat(p1, p2)
      if isPrime(num)
    } {
      println(s"$p1 + $p2 -> $num is prime")
    }
  }
}




/*
run:

2 + 3 -> 23 is prime
2 + 11 -> 211 is prime
3 + 7 -> 37 is prime
3 + 11 -> 311 is prime
5 + 3 -> 53 is prime
7 + 3 -> 73 is prime
11 + 3 -> 113 is prime

*/

 



answered Nov 28, 2025 by avibootz
edited Nov 28, 2025 by avibootz
...