Votre tâche, si vous choisissez de l'accepter, est d'écrire un programme / fonction qui accepte un entier N en entrée. Le programme / la fonction doit produire / renvoyer une liste des N premiers nombres premiers. Mais voici le hic: vous n'êtes pas autorisé à utiliser des caractères premiers dans votre code. Un caractère premier est un caractère dont le point de code Unicode est un nombre premier. Dans la gamme ASCII imprimable, ce sont:
%)+/5;=CGIOSYaegkmq
Mais la règle s'applique également aux caractères non ASCII si votre code les utilise.
- Une entrée valide est un entier N où 0 <N <= T , où vous pouvez choisir T , mais il doit être supérieur ou égal à 10000. T ne doit pas être fini.
- Pour les entrées non valides (non entiers, entiers hors limites), lève une exception ou génère / ne renvoie rien / null.
- Un entier avec des espaces de début / fin en entrée est considéré comme non valide.
- Un entier avec un
+
signe comme entrée est considéré comme non valide. - Un entier avec des zéros de tête en entrée est considéré comme valide.
- Si votre langue vous permet de passer un entier déjà analysé en entrée, les règles d'analyse ci-dessus (à l'exception de la plage un) ne s'appliquent pas, car l'int est déjà analysé.
- L'entrée est toujours en base 10.
- L'utilisation de générateurs principaux et de testeurs de primalité intégrés (cela inclut les fonctions de factorisation principale) n'est pas autorisée.
- La restriction de source est imposée aux caractères Unicode, mais le comptage d'octets pour le score peut être dans un autre encodage si vous le souhaitez.
- La sortie peut contenir une seule nouvelle ligne de fin, mais ce n'est pas obligatoire.
- Si vous affichez / renvoyez la liste des nombres premiers sous forme de chaîne, chaque nombre premier doit être délimité par un ou plusieurs caractères non numériques. Vous pouvez choisir le délimiteur que vous utilisez.
- Il s'agit d'un défi de code-golf , le code le plus court en octets gagne.
Stack Snippet pour vérifier votre code
Vous pouvez utiliser l'extrait de pile ci-dessous pour vérifier que votre code ne contient pas de caractères principaux:
var primes=[],max=10000;for(var i=2;i<=max;i++){primes.push(i);}for(var N=2;N<Math.sqrt(max);N++){if(primes.indexOf(N)===-1){continue;}primes=primes.filter(function (x){return x===N||x%N!==0;});}function setText(elem,text){var z=('innerText' in elem)? 'innerText' : 'textContent';elem[z]=text;}function verify(inputCode,resultSpan){var invalidChars=[];var success=true;for(var i=0;i<inputCode.length;i++){var cc = inputCode.charCodeAt(i);if (cc>max){setText(resultSpan,"Uh oh! The char code was bigger than the max. prime number calculated by the snippet.");success = false;break;}if (primes.indexOf(cc)!==-1){invalidChars.push(inputCode[i]);}}if (invalidChars.length===0&&success){setText(resultSpan, "Valid code!");}else if(success) { var uniqueInvalidChars = invalidChars.filter(function (x, i, self){return self.indexOf(x)===i;});setText(resultSpan, "Invalid code! Invalid chars: " + uniqueInvalidChars.join("")); }}document.getElementById("verifyBtn").onclick=function(e){e=e||window.event;e.preventDefault();var code=document.getElementById("codeTxt").value;verify(code,document.getElementById("result"));};
Enter your code snippet here:<br /><textarea id="codeTxt" rows="5" cols="70"></textarea><br /><button id="verifyBtn">Verify</button><br /><span id="result"></span>
+
, il semble décevant de devoir les supprimer manuellement.
;
se trouve être interdit ...