A conjectura de Goldbach afirma que todo número par maior que dois pode ser expresso como a soma de dois números primos. Por exemplo,
4 = 2 + 2
6 = 3 + 3
8 = 5 + 3
No entanto, quando chegamos a 10, algo interessante acontece. Não apenas 10 podem ser escritos como
5 + 5
mas também pode ser escrito como
7 + 3
Como 10 pode ser expresso como a soma de dois números primos de duas maneiras , dizemos que a "partição Goldbach" de 10 é 2
. Ou de maneira mais geral,
A partição Goldbach de um número é o número total de maneiras distintas de escrever
n = p + q
ondep
eq
são primos ep >= q
Seu desafio é escrever um programa ou função que encontre a partição Goldbach de um número. Agora, tecnicamente, o termo "partição Goldbach" é usado apenas para se referir a números pares. No entanto, como o número inteiro ímpar p + 2 também pode ser expresso como a soma de dois números primos se p> 2 for primo, estenderemos isso a todos os números inteiros positivos ( A061358 ).
Você pode assumir com segurança que sua entrada sempre será um número inteiro positivo e poderá receber entrada e saída em qualquer um dos nossos métodos padrão permitidos , por exemplo, argumentos de função e valor de retorno, STDIN e STDOUT, leitura e gravação em um arquivo etc.
As partições Goldbach dos números inteiros positivos até 100 são:
0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 2, 1, 2, 0, 2, 1, 2, 1, 3, 0, 3, 1,
3, 0, 2, 0, 3, 1, 2, 1, 4, 0, 4, 0, 2, 1, 3, 0, 4, 1, 3, 1, 4, 0, 5, 1, 4,
0, 3, 0, 5, 1, 3, 0, 4, 0, 6, 1, 3, 1, 5, 0, 6, 0, 2, 1, 5, 0, 6, 1, 5, 1,
5, 0, 7, 0, 4, 1, 5, 0, 8, 1, 5, 0, 4, 0, 9, 1, 4, 0, 5, 0, 7, 0, 3, 1, 6
Como sempre, as brechas padrão se aplicam e a resposta mais curta em bytes vence!