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

1 Answer

0 votes
import java.util.ArrayList;
import java.util.List;

public class PrimeConcat {

    // Function to check primality
    public static boolean isPrime(long n) {
        if (n < 2) return false;
        if (n % 2 == 0 && n != 2) return false;

        for (long i = 3; i * i <= n; i += 2) {
            if (n % i == 0) return false;
        }

        return true;
    }

    // Concatenate two integers
    public static long concat(int a, int b) {
        String s = String.valueOf(a) + String.valueOf(b);

        return Long.parseLong(s);
    }

    public static void main(String[] args) {
        int limit = 12; // you can increase this
        List<Integer> primes = new ArrayList<>();

        // Generate primes up to limit
        for (int i = 2; i <= limit; i++) {
            if (isPrime(i)) {
                primes.add(i);
            }
        }

        // Check pairs
        for (int i = 0; i < primes.size(); i++) {
            for (int j = 0; j < primes.size(); j++) {
                if (i == j) continue; // skip same prime if you want
                long num = concat(primes.get(i), primes.get(j));
                if (isPrime(num)) {
                    System.out.println(primes.get(i) + " + " + primes.get(j)
                            + " -> " + 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 prim

*/

 



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