您的任务(如果选择接受)是编写一个接受整数N作为输入的程序/函数。程序/功能应输出/返回前N个质数的列表。但是这里有个要点:不允许在代码中使用质数字符。素数字符是指其Unicode代码点是素数的字符。在可打印的ASCII范围内,这些是:
%)+/5;=CGIOSYaegkmq
但是,如果您的代码使用非ASCII字符,则该规则也适用于非ASCII字符。
- 有效的输入是一个整数Ñ其中0 <N <= T,其中,可以选择Ť,但它必须大于或等于10000。Ť不必是有限的。
- 对于无效输入(非整数,超出范围的整数),抛出异常或输出/不返回任何结果/为空。
- 以前导/结尾空白为输入的整数被认为是无效的。
+
以符号字符作为输入的整数被视为无效。- 以前导零作为输入的整数被视为有效。
- 如果您的语言允许您传递已经解析的整数作为输入,则上述解析规则(范围1除外)将不适用,因为int已被解析。
- 输入始终为10。
- 不允许使用内置的素数生成器和素数测试器(包括素数分解函数)。
- 源限制是对Unicode字符强加的,但是如果需要,可以对分数的字节计数进行其他编码。
- 输出可以包含单个尾随换行符,但这不是必需的。
- 如果您以字符串形式输出/返回素数列表,则每个素数必须由一个或多个非数字字符定界。您可以选择使用哪个定界符。
- 这是一个代码高尔夫挑战,最短的代码以字节为单位获胜。
堆栈代码片段以验证您的代码
您可以使用下面的堆栈片段来验证您的代码不包含素字符:
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>
+
,那么手动将它们扔掉似乎令人失望。
;
恰巧被禁止...