Twoim zadaniem, jeśli zdecydujesz się go zaakceptować, jest napisanie programu / funkcji, która przyjmuje liczbę całkowitą N jako dane wejściowe. Program / funkcja powinna wypisać / zwrócić listę pierwszych N liczb pierwszych. Ale oto haczyk: nie wolno używać znaków pierwszych w kodzie. Znak główny to znak, którego punkt kodu Unicode jest liczbą pierwszą. W zakresie ASCII do wydruku są to:
%)+/5;=CGIOSYaegkmq
Ale reguła ma również zastosowanie do znaków spoza ASCII, jeśli Twój kod ich używa.
- Poprawnym wejściem jest liczba całkowita N, gdzie 0 <N <= T , gdzie można wybrać T , ale musi ona być większa lub równa 10000. T nie musi być skończone.
- W przypadku niepoprawnych danych wejściowych (wartości nie będące liczbami całkowitymi, liczby całkowite poza zakresem) wyrzuć wyjątek lub wyślij / wyślij nic / null.
- Liczba całkowita z wiodącymi / końcowymi białymi znakami wejściowymi jest uważana za niepoprawną.
- Liczba całkowita ze
+
znakiem jako znak wejściowy jest uważana za niepoprawną. - Liczba całkowita z wiodącymi zerami na wejściu jest uważana za prawidłową.
- Jeśli Twój język pozwala na przekazanie już przeanalizowanej liczby całkowitej jako danych wejściowych, powyższe reguły analizy (z wyjątkiem zakresu 1) nie mają zastosowania, ponieważ int jest już przeanalizowany.
- Dane wejściowe zawsze mają wartość base-10.
- Korzystanie z wbudowanych generatorów liczb pierwszych i testerów pierwotności (w tym funkcji faktoryzacji liczb pierwszych) jest niedozwolone.
- Ograniczenie źródła jest nakładane na znaki Unicode, ale liczenie bajtów na wynik może być w innym kodowaniu, jeśli chcesz.
- Dane wyjściowe mogą zawierać pojedynczy znak nowej linii, ale nie jest to wymagane.
- Jeśli wypiszesz / zwrócisz listę liczb pierwszych jako ciąg znaków, to każda liczba pierwsza musi być oddzielona jednym lub wieloma niecyfrowymi znakami. Możesz wybrać używany ogranicznik.
- Jest to wyzwanie dla golfa , wygrywa najkrótszy kod w bajtach.
Stos Snippet, aby zweryfikować kod
Możesz użyć poniższego fragmentu stosu, aby sprawdzić, czy Twój kod nie zawiera znaków pierwszych:
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>
+
, rozczarowanie wymaga ręcznego ich wyrzucenia.
;
zdarza się, że jest zbanowany ...