Nhiệm vụ của bạn, nếu bạn chọn chấp nhận nó, là viết một chương trình / hàm chấp nhận một số nguyên N làm đầu vào. Chương trình / hàm sẽ xuất / trả về danh sách các số nguyên tố N đầu tiên . Nhưng đây là điểm thu hút: bạn không được phép sử dụng các ký tự chính trong mã của mình. Một ký tự chính là một ký tự có điểm mã Unicode là số nguyên tố. Trong phạm vi ASCII có thể in, đây là:
%)+/5;=CGIOSYaegkmq
Nhưng quy tắc cũng áp dụng cho các ký tự không phải ASCII nếu mã của bạn sử dụng các ký tự đó.
- Đầu vào hợp lệ là một số nguyên N trong đó 0 <N <= T , trong đó bạn có thể chọn T , nhưng nó phải lớn hơn hoặc bằng 10000. T không phải là hữu hạn.
- Đối với các đầu vào không hợp lệ (không phải là số nguyên, số nguyên nằm ngoài phạm vi), hãy ném ngoại lệ hoặc đầu ra / trả về không có gì / null.
- Một số nguyên có khoảng trắng hàng đầu / dấu làm đầu vào được coi là không hợp lệ.
- Một số nguyên có
+
ký tự là dấu đầu vào được coi là không hợp lệ. - Một số nguyên có các số 0 đứng đầu làm đầu vào được coi là hợp lệ.
- Nếu ngôn ngữ của bạn cho phép bạn chuyển một số nguyên đã được phân tích cú pháp làm đầu vào, các quy tắc phân tích cú pháp ở trên (ngoại trừ phạm vi một) không áp dụng, vì int đã được phân tích cú pháp.
- Đầu vào luôn là cơ sở-10.
- Không được phép sử dụng các bộ tạo nguyên tố tích hợp và bộ kiểm tra tính nguyên thủy (bao gồm các hàm thừa số nguyên tố).
- Hạn chế nguồn được áp đặt cho các ký tự Unicode, nhưng việc đếm byte cho điểm có thể ở dạng mã hóa khác nếu bạn muốn.
- Đầu ra có thể chứa một dòng mới duy nhất, nhưng điều này là không bắt buộc.
- Nếu bạn xuất / trả về danh sách số nguyên tố dưới dạng một chuỗi, thì mọi số nguyên tố phải được phân cách bằng một hoặc nhiều char không có chữ số. Bạn có thể chọn dấu phân cách bạn sử dụng.
- Đây là một thử thách golf-code , mã ngắn nhất tính bằng byte thắng.
Chồng đoạn để xác minh mã của bạn
Bạn có thể sử dụng Đoạn mã dưới đây để xác minh rằng mã của bạn không chứa các ký tự chính:
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>
+
, có vẻ đáng thất vọng khi được yêu cầu loại bỏ chúng theo cách thủ công.
;
bị cấm ...