Las reglas son simples:
- Primero n primos (no primos debajo de n ), deben imprimirse en salida estándar separados por nuevas líneas (los primos deben generarse dentro del código)
- los primos no pueden ser generados por una función incorporada o a través de una biblioteca , es decir, el uso de una función incorporada o de una biblioteca como, por ejemplo, prime = get_nth_prime (n), is_a_prime (número) o factorlist = list_all_factors (número) no será muy creativo.
Puntuación: Digamos que definimos Puntuación = f ([número de caracteres en el código]), siendo O ( f (n)) la complejidad de su algoritmo donde n es el número de números primos que encuentra. Entonces, por ejemplo, si tiene un código de 300 caracteres con complejidad O (n ^ 2), la puntuación es 300 ^ 2 = 90000 , para 300 caracteres con O (n * ln (n)), la puntuación se convierte en 300 * 5.7 = 1711.13 ( supongamos que todos los registros son registros naturales por simplicidad)
Use cualquier lenguaje de programación existente, gana la puntuación más baja
Editar: El problema ha cambiado de encontrar 'primeros 1000000 primos' a 'primeros n primos' debido a una confusión sobre qué es 'n' en O (f (n)), n es el número de primos que encuentra (encontrar primos es el problema aquí y la complejidad del problema depende del número de primos encontrados)
Nota: para aclarar algunas confusiones sobre la complejidad, si 'n' es el número de primos que encuentra y 'N' es el enésimo primer encontrado, la complejidad en términos de n es y N no son equivalentes, es decir, O (f (n)). = O (f (N)) como, f (N)! = Constante * f (n) y N! = Constante * n, porque sabemos que la enésima función principal no es lineal, aunque ya que estábamos encontrando 'n' la complejidad de los números primos debe ser fácilmente expresable en términos de 'n'.
Como señaló Kibbee, puede visitar este sitio para verificar sus soluciones ( aquí está la antigua lista de documentos de Google)
Incluya estos en su solución -
qué complejidad tiene su programa (incluya análisis básico si no es trivial)
longitud de caracteres del código
la puntuación final calculada
Esta es mi primera pregunta de CodeGolf, por lo tanto, si hay un error o una laguna en las reglas anteriores, indíquelas.
1[\p:i.78498
mi respuesta para esto sería 1[\p:i.1000000
. Incluso suponiendo que el algoritmo principal interno de J sea O (n ^ 2), mi puntaje solo sería 196.
n
es el número de primos o el primo máximo, y todos ignoran el hecho de que la suma de números en el rango 0..n
es O(logn)
, y la multiplicación y división son aún más caras. Le sugiero que proporcione algunos algoritmos de ejemplo junto con su complejidad correcta.
O-tilde(k^6)
. Esto lleva a la implicación de que cualquiera que reclame un tiempo de ejecución mejor que O-tilde(n ln n (ln(n ln n))^6)
haya entendido mal parte del problema; y a la pregunta de cómo se O-tilde
deben manejar las complejidades en la puntuación.