计算第n个素数的最短方法是什么?

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)

对于这个问题,可读性不是一个问题.在时间和内存方面更昂贵的代码,但满足约束将在这里被认为更好.

ken*_*ytm 7

Mathematica:13个字符

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)