JC Denton
Shurmano Dios
- Nº Ranking
- 223
- Shurmano Nº
- 9525
- Desde
- 11 Abr 2024
- Mensajes
- 1,842
- Reacciones
- 14,659
@Jorge2019 y yo estabamos a punto de medirnos las pollas haciendo un reto de programación y bueno, en vez de ser entre dos pues que sea entre todos los que se animen
En este caso es generar e imprimir los primeros primos contenidos hasta el número 10.000.000 o lo que es lo mismo, los primos que hay entre el 0 y el 10.000.000
El más rápido gana, de momento eso lo dejamos para luego porque cada ordenador es un mundo y ya se verá como se hace
Y bueno, aqui tenemos una implementación a lo bruto, es O(n²) pero hace el trabajo y por lo tanto es mi primera "entrega", muy mejorable pero de eso se trata, de que haya una compentecia para darle emoción al asunto
No puede ser más sencillo, literalmente coge un número y prueba a dividir entre todos los demas a partir del 2, si nadie lo divide es que es primo. Solo calcula hasta 100 porque da lo mismo 100 que 10 millones, el algoritmo es el mismo
------------------------------------------------
Trucos para detecar si un número es primo
- En vez de probar desde el 2 hasta n (o el propio número) hay una propiedad matemática que dictamina que solo es necesario probar hasta raiz de n, o lo que es lo mismo, si tengo el número 100 para ver si es primo le hago la raíz que es 10 y solo tendría que probar desde el 2 hasta el 10, me ahorro probar desde el 10 hasta el 99, un ahorro de calculo importante
- Hay otra propiedad llamada teorema fundamental de la aritmética que dice que se pueden encontrar rangos de números entre los que no hay primos, viene a ser k!+2, k! + 3,..., k!+k
! es el factorial, pongo un ejemplo, para k = 6
__ 6!+2 = 722
__ 6!+3 = 723
__ 6!+4 = 724
__ 6!+5 = 725
__ 6!+6 = 726
Con lo que en el rango de [722,726] no hay números primos, si en vez de k = 6 usamos un valor grande el rango será más grande (el rango es de k elementos) y puede ahorrar más tiempo de cálculo porque vamos eliminando opciones
-----------------------------------------------
Pues nada, espero que os animeis
En este caso es generar e imprimir los primeros primos contenidos hasta el número 10.000.000 o lo que es lo mismo, los primos que hay entre el 0 y el 10.000.000
El más rápido gana, de momento eso lo dejamos para luego porque cada ordenador es un mundo y ya se verá como se hace
Y bueno, aqui tenemos una implementación a lo bruto, es O(n²) pero hace el trabajo y por lo tanto es mi primera "entrega", muy mejorable pero de eso se trata, de que haya una compentecia para darle emoción al asunto

Rust Playground
A browser interface to the Rust compiler to experiment with the language
play.rust-lang.org
No puede ser más sencillo, literalmente coge un número y prueba a dividir entre todos los demas a partir del 2, si nadie lo divide es que es primo. Solo calcula hasta 100 porque da lo mismo 100 que 10 millones, el algoritmo es el mismo
------------------------------------------------
Trucos para detecar si un número es primo
- En vez de probar desde el 2 hasta n (o el propio número) hay una propiedad matemática que dictamina que solo es necesario probar hasta raiz de n, o lo que es lo mismo, si tengo el número 100 para ver si es primo le hago la raíz que es 10 y solo tendría que probar desde el 2 hasta el 10, me ahorro probar desde el 10 hasta el 99, un ahorro de calculo importante
- Hay otra propiedad llamada teorema fundamental de la aritmética que dice que se pueden encontrar rangos de números entre los que no hay primos, viene a ser k!+2, k! + 3,..., k!+k
! es el factorial, pongo un ejemplo, para k = 6
__ 6!+2 = 722
__ 6!+3 = 723
__ 6!+4 = 724
__ 6!+5 = 725
__ 6!+6 = 726
Con lo que en el rango de [722,726] no hay números primos, si en vez de k = 6 usamos un valor grande el rango será más grande (el rango es de k elementos) y puede ahorrar más tiempo de cálculo porque vamos eliminando opciones
-----------------------------------------------
Pues nada, espero que os animeis


