Projeto Euler – Problema #3 em J

Os fatores primos de 13195 são 5, 7, 13 e 29. Qual o maior fator primo de 600851475143?

Mais um problema para ser resolvido em tempo recorde. Em J, os fatores primos de um número são dados pelo verbo Prime Factors q: .

q: 13195 => 5 7 13 29

Alguém poderia gritar: “Assim não vale!”. Mas é claro que vale! Se a linguagem disponibiliza um recurso, é dever do programador saber (na realidade são tantos que não chega a ser obrigação). Mas uma noção. Seria muito pior o programador ficar pesquisando e bolando algoritmos eficientes se a operação está diante do seu nariz.

É só trocar o 13195 pelo 600851475143 e pegar o maior fator. Problema resolvido!

De qualquer forma, q: retorna um vetor de fatores primos e nós queremos apenas o maior. Poderemos utilizar Larger of >. para recuperar o maior valor. Por exemplo: 4 >. 8 >. 3 => 8.

Então podemos escrever:

p3 =. 3 : '>./q:y'

Você está lembrado do que op/ vetor faz?

Anúncios