Le regole sono semplici:
- I primi n numeri primi (non i numeri primi al di sotto di n ), devono essere stampati sullo standard output separati da newline (i numeri primi devono essere generati nel codice)
- i numeri primi non possono essere generati da una funzione integrata o tramite una libreria , ovvero l'uso di una funzione integrata o di libreria come, prime = get_nth_prime (n), is_a_prime (numero) o factorlist = list_all_factors (numero) non sarà molto creativo.
Punteggio: supponiamo che definiamo Score = f ([numero di caratteri nel codice]), O ( f (n)) è la complessità dell'algoritmo in cui n è il numero di numeri primi che trova. Ad esempio, se hai un codice di 300 caratteri con complessità O (n ^ 2), il punteggio è 300 ^ 2 = 90000 , per 300 caratteri con O (n * ln (n)), il punteggio diventa 300 * 5.7 = 1711.13 ( supponiamo che tutti i log siano log naturali per semplicità)
Utilizza qualsiasi linguaggio di programmazione esistente, il punteggio più basso vince
Modifica: il problema è stato cambiato dal trovare "primi 1000000 numeri primi" in "primi n numeri primi" a causa di una confusione su ciò che è "n" in O (f (n)), n è il numero di numeri primi che trovi (trovare i numeri primi è il problema qui e quindi la complessità del problema dipende dal numero di numeri primi trovati)
Nota: per chiarire alcune confusioni sulla complessità, se 'n' è il numero di numeri primi che trovi e 'N' è l'ennesimo numero primo trovato, la complessità in termini di n è e N non sono equivalenti, cioè O (f (n))! = O (f (N)) as, f (N)! = Costante * f (n) e N! = Costante * n, perché sappiamo che l'ennesima funzione primo non è lineare, anche se da quando abbiamo trovato 'n' la complessità dei numeri primi dovrebbe essere facilmente esprimibile in termini di "n".
Come sottolineato da Kibbee, puoi visitare questo sito per verificare le tue soluzioni ( qui è il vecchio elenco di documenti di Google)
Includi questi nella tua soluzione -
quale complessità ha il tuo programma (includi l'analisi di base se non banale)
lunghezza del carattere del codice
il punteggio finale calcolato
Questa è la mia prima domanda su CodeGolf, quindi, se c'è un errore o una lacuna nelle regole di cui sopra, ti preghiamo di segnalarle.
1[\p:i.78498
mia risposta per questo sarebbe 1[\p:i.1000000
. Anche supponendo che l'algoritmo primo interno di J sia O (n ^ 2) il mio punteggio sarebbe comunque solo 196.
n
sia il numero di numeri primi o il massimo primo, e tutti ignorano il fatto che l'aggiunta di numeri nell'intervallo 0..n
è O(logn)
, e la moltiplicazione e la divisione sono ancora più costose. Ti suggerisco di fornire alcuni algoritmi di esempio insieme alla loro corretta complessità.
O-tilde(k^6)
. Ciò porta all'implicazione che chiunque rivendichi un tempo di esecuzione migliore di quanto O-tilde(n ln n (ln(n ln n))^6)
abbia frainteso una parte del problema; e alla domanda su come gestire le O-tilde
complessità nel punteggio.