Estoy tratando de trabajar en un programa y creo que me ha golpeado un problema de matemáticas (si es no, por favor hágamelo saber, lo siento). Básicamente lo que estoy haciendo es tomar un número y el uso de un universo de números y estoy tratando de averiguar cómo los combos de trabajo (creo que esta es una forma de la teoría de los números).
Por ejemplo, para una suma de 10 y el uso de un universo de [4, 2, 1], tengo (estoy mostrando cómo percibo el desglose):
2 * 4 + 1 * 2 + 0 * 1 = 4 + 4 + 2
2 * 4 + 0 * 2 + 2 * 1 = 4 + 4 + 1 + 1
1 * 4 + 3 * 2 + 0 * 1 = 4 + 2 + 2 + 2
1 * 4 + 2 * 2 + 2 * 1 = 4 + 2 + 2 + 1 + 1
1 * 4 + 1 * 2 + 4 * 1 = 4 + 2 + 1 + 1 + 1 + 1
1 * 4 + 0 * 2 + 6 * 1 = 4 + 1 + 1 + 1 + 1 + 1 + 1
0 * 4 + 5 * 2 + 0 * 1 = 2 + 2 + 2 + 2 + 2
0 * 4 + 4 * 2 + 2 * 1 = 2 + 2 + 2 + 2 + 1 + 1
0 * 4 + 3 * 2 + 4 * 1 = 2 + 2 + 2 + 1 + 1 + 1 + 1
0 * 4 + 2 * 2 + 6 * 1 = 2 + 2 + 1 + 1 + 1 + 1 + 1 + 1
0 * 4 + 1 * 2 + 8 * 1 = 2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
0 * 4 + 0 * 2 + 10 * 1 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
Así como los números se hacen más grandes, estoy teniendo problemas de escala (si tengo una suma de 1000 con 30 variables, tarda una eternidad). Por lo que mirar el problema como tengo encima, pensé que podría romper el basado en los resultados. Así que lo que hago es tomar el universo de la lista [4,2,1] y vaya a la lista y ver cómo muchos de los números anteriores necesario para hacer de ese número. He aquí un ejemplo:
2 [[1, 1]]
4 [[2, 2]]
4 [[2, 2]]
Lo que significa es 1+1=2, 2+2=4, así que puedo usar esa tabla para romper el primer resultado más alto (4+4+2... miro la tabla y ver que 2 = 1+1 con el fin de reemplazar el que, a continuación, volver a la primera mejor resultado y, a continuación, la búsqueda de la ruptura de la segunda serie, etc.). No estoy seguro, pero creo que esto puede escalar porque puedo dividir el cálculo de búsquedas y separados de CPU/sistemas/clusters/etc..
Probablemente hay muchos defectos lógicos, pero el que me di cuenta de que ahora es ¿qué pasa si el número es un número primo o no se puede descomponer en el último número más alto? Decir que mi universo cambia de [4,2,1] a [4,3,2,1]... porque el mayor partido aún 4+4+2 3 recibirá perdido totalmente como una solución.
Entonces, me pregunto cómo puedo matemáticamente de acuerdo con los números primos (tengo una función de la identificación de ellos)? También lo es la lógica correcta si tengo los números que no se dividen limpiamente en cada uno de los otros? (universo de [6,4,2,1] rompe también). En el pasado yo bruta obligado a este (intente de todo hasta que lo consigue) el problema es, si no puedo descomponer el problema en pequeños problemas de matemáticas que me pueden escala. Creo que esto se puede hacer porque puedo escala (en una escala pequeña :-), pero tratar con números específicos son el problema (primer y supongo que los números que son el opuesto de la suma o impar).
Lo siento por la pregunta larga y otra vez, lo siento si este no es el apropiado para esta P/A, pero cualquier sugerencia o consejo útil.