Les règles sont simples:
- Les premiers n nombres premiers (pas les nombres premiers inférieurs à n ) doivent être imprimés sur la sortie standard séparés par des retours à la ligne (les nombres premiers doivent être générés dans le code)
- les nombres premiers ne peuvent pas être générés par une fonction intégrée ou par le biais d'une bibliothèque , c'est-à-dire que l'utilisation d'une fonction intégrée ou d'une bibliothèque telle que prime = get_nth_prime (n), is_a_prime (nombre) ou factorlist = list_all_factors (nombre) ne sera pas très créative.
Scoring - Disons que nous définissons Score = f ([nombre de caractères dans le code]), O ( f (n)) étant la complexité de votre algorithme où n est le nombre de nombres premiers qu'il trouve. Ainsi, par exemple, si vous avez un code de 300 caractères avec une complexité O (n ^ 2), le score est de 300 ^ 2 = 90000 , pour 300 caractères avec O (n * ln (n)), le score devient 300 * 5,7 = 1711,13 ( supposons que tous les journaux soient des journaux naturels pour plus de simplicité)
Utilisez n'importe quel langage de programmation existant, le score le plus bas gagne
Edit: le problème a été changé de trouver 'premiers 1000000 premiers' à 'premiers n premiers' en raison d'une confusion sur ce que 'n' dans O (f (n)) est, n est le nombre de nombres premiers que vous trouvez (trouver des nombres premiers est le problème ici et donc la complexité du problème dépend du nombre de nombres premiers trouvés)
Remarque: pour clarifier certaines confusions sur la complexité, si 'n' est le nombre de nombres premiers que vous trouvez et 'N' est le nième nombre premier trouvé, la complexité en termes de n est et N ne sont pas équivalents, c'est-à-dire O (f (n))! = O (f (N)) as, f (N)! = Constant * f (n) et N! = Constant * n, car nous savons que la nième fonction première n'est pas linéaire, je pensais que puisque nous trouvions 'n' la complexité des nombres premiers devrait être facilement exprimable en termes de «n».
Comme l'a souligné Kibbee, vous pouvez visiter ce site pour vérifier vos solutions ( voici l'ancienne liste de documents Google)
Veuillez les inclure dans votre solution -
la complexité de votre programme (incluez une analyse de base si elle n'est pas anodine)
longueur de caractère du code
le score calculé final
Ceci est ma première question CodeGolf donc, s'il y a une erreur ou une faille dans les règles ci-dessus, veuillez les signaler.
1[\p:i.78498
ma réponse car ce serait 1[\p:i.1000000
. Même en supposant que l'algorithme premier interne de J est O (n ^ 2), mon score ne serait toujours que de 196.
n
le nombre de nombres premiers ou le nombre maximal premier, et tout le monde ignore le fait que l'ajout de nombres dans la plage 0..n
est O(logn)
, et la multiplication et la division sont encore plus coûteuses. Je vous suggère de donner quelques exemples d'algorithmes avec leur complexité correcte.
O-tilde(k^6)
. Cela conduit à penser que quiconque réclame un temps de course supérieur à celui qui O-tilde(n ln n (ln(n ln n))^6)
a mal compris une partie du problème; et à la question de savoir comment les O-tilde
complexités doivent être traitées dans la notation.