Estoy repasando los problemas en Project Euler para enseñarme la programación de Ruby. Sé que hay una función incorporada para hacer esto, pero estoy evitando las funciones integradas para ayudarme a aprender.Ruby: determine si un número es un número primo
Así que tengo que escribir un método para determinar si un número es primo. El primer método funciona, pero el segundo no. ¿Alguien puede explicar por qué?
def is_prime n
for d in 2..(n - 1)
if (n % d) == 0
return false
end
end
true
end
def is_prime2 n
foundDivider = false
for d in 2..(n - 1)
foundDivider = ((n % d) == 0) or foundDivider
end
not foundDivider
end
Esto no es una respuesta a su pregunta ... pero por qué te la comprobación de todos los números después de que haya encontrado que no es un número primo? Ya * * obtuvo una respuesta definitiva a su pregunta. –
Sí, me di cuenta de eso, pero lo hice de esa manera para asegurarme de que sé cómo funcionan los operadores booleanos en Ruby. –
Se puede desarrollar un algoritmo más eficiente con el siguiente enfoque: no itere sobre números pares (no solo omítelos) y corte el bucle al 5-10% del tamaño original. Los detalles están aquí: http://stackoverflow.com/questions/26792960/why-doesnt-my-ruby-coding-for-finding-prime-numbers-work/32806718#32806718 – Anatoly