TL;DR
¿Qué se puede recomendar para mejorar en la búsqueda de soluciones eficientes a los problemas de matemáticas?
De fondo
El primer reto en el Proyecto de Euler dice:
Encontrar la suma de todos los múltiplos de 3 o 5 por debajo de 1000.
La primera, y la única solución que yo podía pensar era en que la fuerza bruta manera:
target = 999
sum = 0
for i = 1 to target do
if (i mod 3 = 0) or (i mod 5 = 0) then sum := sum + i
output sum
Esto no me da el resultado correcto, pero se vuelve exponencialmente más lento cuanto más grande sea el objetivo. Entonces vi a esta solución:
target=999
Function SumDivisibleBy(n)
p = target div n
return n * (p * (p + 1)) div 2
EndFunction
Output SumDivisibleBy(3) + SumDivisibleBy(5) - SumDivisibleBy(15)
Yo no tengo problemas para la comprensión de cómo funciona la matemática, y al ver esto me siento como si pudiera se han dado cuenta de que a mí mismo. El problema es que nunca voy a hacer. Siempre termino con algunos exponencial, la fuerza bruta, como solución.
Obviamente hay una gran diferencia entre la comprensión de una solución, y de hecho darse cuenta de que la solución de ti mismo. Y no estoy preguntando cómo se Euler a sí mismo.
Lo que yo me pregunto tho es, ¿hay métodos y / o pasos, usted puede aplicar para resolver problemas de matemáticas para encontrar la mejor (o al menos una buena solución?
Si sí, pueden ustedes recomendar algunos libros/videos/conferencias para enseñar estos métodos? Y ¿qué haces a ti mismo al intentar encontrar soluciones?