Ваша задача, если вы решите принять ее, - написать программу / функцию, которая принимает целое число N в качестве входных данных. Программа / функция должна вывести / вернуть список первых N простых чисел. Но здесь есть одна загвоздка: вам не разрешено использовать простые символы в вашем коде. Простым символом является символ, чья кодовая точка Unicode является простым числом. В диапазоне ASCII для печати это:
%)+/5;=CGIOSYaegkmq
Но правило также применяется к не-ASCII символам, если ваш код использует их.
- Допустимым входным значением является целое число N, где 0 <N <= T , где вы можете выбрать T , но оно должно быть больше или равно 10000. T не обязательно должно быть конечным.
- Для недопустимых входных данных (нецелые числа, целые числа вне диапазона) выведите исключение или не выводите / не возвращайте ничего / ноль.
- Целое число с начальным / конечным пробелом в качестве входных данных считается недействительным.
- Целое число со
+
знаком в качестве входного признака считается недействительным. - Целое число с ведущими нулями в качестве входных данных считается допустимым.
- Если ваш язык позволяет вам передавать уже проанализированное целое число в качестве входных данных, вышеприведенные правила синтаксического анализа (кроме диапазона) не применяются, потому что int уже проанализирован.
- Ввод всегда базовый-10.
- Использование встроенных простых генераторов и тестеров простоты (включая функции факторизации простых чисел) не допускается.
- Исходное ограничение накладывается на символы Юникода, но подсчет байтов для оценки может быть в другой кодировке, если хотите.
- Вывод может содержать один завершающий перевод строки, но это не обязательно.
- Если вы выводите / возвращаете список простых чисел в виде строки, то каждое простое число должно быть разделено одним или несколькими нецифровыми символами. Вы можете выбрать, какой разделитель вы используете.
- Это задача кода-гольфа , выигрывает самый короткий код в байтах.
Фрагмент стека для проверки вашего кода
Вы можете использовать приведенный ниже фрагмент стека, чтобы убедиться, что ваш код не содержит простых символов:
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>
+
, то, кажется, разочаровывает необходимость вручную выбрасывать их.
;
оказывается запрещенным ...