Ihre Aufgabe ist es, ein Programm / eine Funktion zu schreiben, das / die eine ganze Zahl N als Eingabe akzeptiert, wenn Sie dies akzeptieren möchten. Das Programm / die Funktion sollte eine Liste der ersten N Primzahlen ausgeben / zurückgeben . Aber hier ist der Haken: Sie dürfen keine Primzahlen in Ihrem Code verwenden. Ein Primzeichen ist ein Zeichen, dessen Unicode-Codepunkt eine Primzahl ist. Im druckbaren ASCII-Bereich sind dies:
%)+/5;=CGIOSYaegkmq
Die Regel gilt jedoch auch für Nicht-ASCII-Zeichen, wenn Ihr Code diese verwendet.
- Eine gültige Eingabe ist eine Ganzzahl N mit 0 <N <= T , wobei Sie T auswählen können , sie muss jedoch größer oder gleich 10000 sein. T muss nicht endlich sein.
- Für ungültige Eingaben (Nicht-Ganzzahlen, Ganzzahlen außerhalb des Bereichs) eine Ausnahme auslösen oder "output / return nothing / null" ausgeben.
- Eine Ganzzahl mit führenden / nachfolgenden Leerzeichen als Eingabe wird als ungültig betrachtet.
- Eine Ganzzahl mit einem
+
Vorzeichen als Eingabe wird als ungültig betrachtet. - Eine Ganzzahl mit führenden Nullen als Eingabe wird als gültig betrachtet.
- Wenn Sie in Ihrer Sprache eine bereits analysierte Ganzzahl als Eingabe übergeben können, gelten die obigen Analyseregeln (mit Ausnahme des Bereichs 1) nicht, da die Ganzzahl bereits analysiert wurde.
- Die Eingabe ist immer Base-10.
- Die Verwendung von eingebauten Primgeneratoren und Primalitätstestern (einschließlich Primfaktorisierungsfunktionen) ist nicht zulässig.
- Die Quellenbeschränkung gilt für Unicode-Zeichen, die Byte-Zählung für die Partitur kann jedoch auch in einer anderen Codierung erfolgen, wenn Sie dies wünschen.
- Die Ausgabe kann eine einzelne nachgestellte Zeile enthalten, dies ist jedoch nicht erforderlich.
- Wenn Sie die Primzahlliste als Zeichenfolge ausgeben / zurückgeben, muss jede Primzahl durch ein oder mehrere nichtstellige Zeichen begrenzt werden. Sie können auswählen, welches Trennzeichen Sie verwenden möchten.
- Dies ist eine Code-Golf- Herausforderung, der kürzeste Code in Bytes gewinnt.
Stapeln Sie Snippet, um Ihren Code zu überprüfen
Sie können das folgende Stack-Snippet verwenden, um zu überprüfen, ob Ihr Code keine Primzahlen enthält:
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>
+
, erscheint es enttäuschend, diese manuell auszulassen .
;
es verboten ist ...