package com.shekhargulati.ninetynine_problems._02_arithmetic;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.IntStream;
/**
* (**) Goldbach's conjecture
* <p>
* Goldbach's conjecture says that every positive even number greater than 2 is the sum of two prime numbers.
* Example: 28 = 5 + 23. It is one of the most famous facts in number theory that has not been proved to be correct
* in the general case. It has been numerically confirmed up to very large numbers.
* Write a predicate to find the two prime numbers that sum up to a given even integer.
*/
public class P35 {
public static List<Integer> goldbach(int number) {
if (number == 2) {
return Collections.emptyList();
} else if (number % 2 != 0) {
return Collections.emptyList();
}
List<Integer> primeNumbers = P34.primeNumbers(IntStream.rangeClosed(2, number));
for (Integer primeNumber : primeNumbers) {
if (primeNumbers.contains(number - primeNumber)) {
return Arrays.asList(primeNumber, number - primeNumber);
}
}
throw new RuntimeException("Should not have happened!!");
}
}