Repara que ele colocou explícito o facto de, tirando o número 2, o número precisar de ser ímpar para poder ser primo.
Isso seria uma melhoria, mas não é programação dinâmica.
Um aperfeiçoamento muito comum (e que faz MUITA diferença), é reparar que um número composto é necessariamente da forma a = b*c. Isso significa que, se o número for composto, então possui sempre um factor menor ou igual a sqrt(a), porque "b" e "c" não pode ser os dois, simultaneamente, maiores do que sqrt(a). Portanto não precisas de testar todos os números entre 3 e "i-2", podes só testar os números entre 3 e "<= sqrt(i)".
↧