Como joriki señaló que este problema es imposible.
La razón por la que es imposible es que hay varias soluciones y así los matemáticos no sería capaz de declarar que habían descubierto que cada una a través de los números.
La conversación nos da las restricciones adicionales en las soluciones. En orden para Un matemático para declarar que no hay manera de que B podría determinar su suma, eso significa que él haya cerciorado de que:
- Su suma NO es la suma de dos números primos.
- Su suma nunca puede ser creado usando dos números cuyo producto tiene una única factorización en el intervalo [2, 20] es decir, 20+20=40, => 20*20=400 ( creo que el resultado de esto es que la suma debe ser menor que 13 13=2+11 y 11*2 = 22 > 20)
(Por favor nota que me hizo la siguiente en papel y puede haber cometido un error en alguna parte.)
A partir de los límites del problema sabemos que las sumas posibles rango de 4 a 40 inclusive. El uso de la primera restringir podemos eliminar muchos de estos. Si tomar todas las combinaciones posibles de la adición de dos números primos (en el intervalo [2, 20]) y eliminar aquellas sumas de dinero que nos queda a los siguientes sumas posibles:
11, 17, 23, 25, 27, 29, 31, 33, 35, 37, 39, 40
La aplicación de la restricción 2 encontramos que la suma debe ser 11. Esto permite matemático B a declarar ", Pero sé que la suma ahora!"
En fin no hay una única factorización debemos ser capaces de crear la suma (11) con un no-primos en el intervalo [2, 20]. Para encontrar las soluciones que debemos restar cada uno de los non-prime a partir de la suma. Para cada solución válida será el resultado en el intervalo [2, 20]. Esto nos lleva a la siguiente conjunto de cuatro soluciones.
- (4, 7) Producto: 28 = 2 * 14.
- (5, 6) Producto: 30 = 3 * 10 = 2 * 15
- (3, 8) Producto: 24 = 4 * 6 = 2 * 12
- (2, 9) Producto: 18 = 3 * 6
Nota: joriki de java de código es incorrecto. En lugar de demostrar que no hay soluciones es, de hecho, encuentra muchos falsos positivos.
Cuando se ejecuta el programa "no se puede determinar" nunca es la salida que significa que el programa no se entera de lo que cree que son soluciones.
'j' no está probado para comprobar si está en el rango, la creación de muchos falsos positivos.
suma = 15 tiene una única factorización 3*5, pero el programa cuenta 2 factorisations en forma de 3*5 & 5*3. Esto significa que nfactorizations termina siendo 1 y por lo tanto la creación de un falso positivo.
Incluso cuando estos errores son corregidos el programa de pruebas para casos tales como suma = 7 y encuentra la solución (3, 4). Esto también está mal como Un matemático no podía mirar a la suma, 7 y a la conclusión de que el matemático B no sería capaz de encontrar la suma. Esto es debido a que 7 puede estar formado por la adición de 2 y 5, ambos de los cuales son los principales. B sería capaz de mirar a su producto de 10 y deducir que los números son 2 y 5, y que la suma es 2+5=7.