# Lemoine’s Conjecture

Any odd integer greater than 5 can be expressed as a sum of an odd prime (all primes other than 2 are odd) and an even semiprime. A semiprime number is a product of two prime numbers. This is called Lemoine’s conjecture.
Examples :

7 = 3 + (2 × 2),
where 3 is a prime number (other than 2) and 4 (= 2 × 2) is a semiprime number.

11 = 5 + (2 × 3)
where 5 is a prime number and 6(= 2 × 3) is a semiprime number.

9 = 3 + (2 × 3) or 9 = 5 + (2 × 2)

47 = 13 + 2 × 17 = 37 + 2 × 5 = 41 + 2 × 3 = 43 + 2 × 2

## C++

 `// C++ code to verify Lemoine's Conjecture ` `// for any odd number >= 7 ` `#include ` `using` `namespace` `std; ` ` `  `// Function to check if a number is ` `// prime or not ` `bool` `isPrime(``int` `n) ` `{ ` `    ``if` `(n < 2) ` `        ``return` `false``; ` `         `  `    ``for` `(``int` `i = 2; i <= ``sqrt``(n); i++) { ` `        ``if` `(n % i == 0) ` `            ``return` `false``; ` `    ``} ` `    ``return` `true``; ` `} ` ` `  `// Representing n as p + (2 * q) to satisfy ` `// lemoine's conjecture ` `void` `lemoine(``int` `n) ` `{ ` `    ``// Declaring a map to hold pairs (p, q) ` `    ``map<``int``, ``int``> pr; ` `     `  `    ``// Declaring an iterator for map ` `    ``map<``int``, ``int``>::iterator it; ` `    ``it = pr.begin(); ` `     `  `    ``// Finding various values of p for each q ` `    ``// to satisfy n = p + (2 * q) ` `    ``for` `(``int` `q = 1; q <= n / 2; q++)  ` `    ``{  ` `        ``int` `p = n - 2 * q; ` `         `  `        ``// After finding a pair that satisfies the ` `        ``// equation, check if both p and q are ` `        ``// prime or not ` `        ``if` `(isPrime(p) && isPrime(q)) ` `         `  `            ``// If both p and q are prime, store ` `            ``// them in the map ` `            ``pr.insert(it, pair<``int``, ``int``>(p, q)); ` `    ``} ` `     `  `    ``// Displaying all pairs (p, q) that satisfy ` `    ``// lemoine's conjecture for the number 'n' ` `    ``for` `(it = pr.begin(); it != pr.end(); ++it) ` `        ``cout << n << ``" = "` `<< it->first ` `             ``<< ``" + (2 * "` `<< it->second << ``")\n"``; ` `} ` ` `  `// Driver Function ` `int` `main() ` `{ ` `    ``int` `n = 39; ` `    ``cout << n << ``" can be expressed as "` `<< endl; ` `     `  `    ``// Function calling ` `    ``lemoine(n); ` `     `  `    ``return` `0; ` `} ` ` `  `// This code is contributed by Saagnik Adhikary `

## Python3

 `# Python code to verify Lemoine's Conjecture ` `# for any odd number >= 7 ` ` `  `from` `math ``import` `sqrt ` ` `  ` `  `# Function to check if a number is ` `# prime or not ` `def` `isPrime(n: ``int``) ``-``> ``bool``: ` `    ``if` `n < ``2``: ` `        ``return` `False` ` `  `    ``for` `i ``in` `range``(``2``, ``int``(sqrt(n)) ``+` `1``): ` `        ``if` `n ``%` `i ``=``=` `0``: ` `            ``return` `False` ` `  `    ``return` `True` ` `  ` `  `# Representing n as p + (2 * q) to satisfy ` `# lemoine's conjecture ` `def` `lemoine(n: ``int``) ``-``> ``None``: ` ` `  `    ``# Declaring a map to hold pairs (p, q) ` `    ``pr ``=` `dict``() ` ` `  `    ``# Finding various values of p for each q ` `    ``# to satisfy n = p + (2 * q) ` `    ``for` `q ``in` `range``(``1``, n ``/``/` `2` `+` `1``): ` `        ``p ``=` `n ``-` `2` `*` `q ` ` `  `        ``# After finding a pair that satisfies the ` `        ``# equation, check if both p and q are ` `        ``# prime or not ` `        ``if` `isPrime(p) ``and` `isPrime(q): ` ` `  `            ``# If both p and q are prime, store ` `            ``# them in the map ` `            ``if` `p ``not` `in` `pr: ` `                ``pr[p] ``=` `q ` ` `  `    ``# Displaying all pairs (p, q) that satisfy ` `    ``# lemoine's conjecture for the number 'n' ` `    ``for` `it ``in` `pr: ` `        ``print``(``"%d = %d + (2 * %d)"` `%` `(n, it, pr[it])) ` ` `  ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``n ``=` `39` `    ``print``(n, ``"can be expressed as "``) ` ` `  `    ``# Function calling ` `    ``lemoine(n) ` ` `  `# This code is contributed by ` `# sanjeev2552 `

Output :

```39 can be expressed as :
39 = 5 + (2 * 17)
39 = 13 + (2 * 13)
39 = 17 + (2 * 11)
39 = 29 + (2 * 5)
```

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.