wha*_*cko 0 c primes code-golf
什么是" 计算第n个素数 " 的最短C代码?
在重要字符方面最短,即分号,非空白字符,关键字和逗号的数量.
标准输入中的整数n,由新行分隔.输入将由EOF终止.
在输入n之后,将第n个素数打印到由新行分隔的标准输出.
(您可以假设素数<10,000,即n <1,230.)
Input:
1
2
4
8
32
999
42
5
Output:
2
3
7
19
131
7907
181
11
Run Code Online (Sandbox Code Playgroud)
我的尝试:
#define m 10000
a[m],b[m],x;
main(i,j){
for(i=2;i<m;i++)
{
if (!a[i])
for (b[++x]=i,j=2*i;j<m;j+=i)
a[j]=1;
}
for(;~scanf("%d",&i);printf("%d\n",b[i]));
}
Run Code Online (Sandbox Code Playgroud)
对于这个问题,可读性不是一个问题.在时间和内存方面更昂贵的代码,但满足约束将在这里被认为更好.
Prime@Input[]
Run Code Online (Sandbox Code Playgroud)
该Prime功能是内置的.
作为REPL:34个字符
While[0<(s=Input[]),Print@Prime@s]
Run Code Online (Sandbox Code Playgroud)
或者,以29个字符执行10,000次:
Print@Prime@Input[]~Do~{1*^4}
Run Code Online (Sandbox Code Playgroud)