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

标签 c code-golf primes

计算第 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

我的尝试:

 #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]));
  }

对于这个问题,可读性不是问题。在时间和内存方面成本更高但满足约束的代码将在此处被视为更好。

最佳答案

Mathematica:13 个字符

Prime@Input[]

Prime功能是内置的。


作为 REPL:34 个字符

While[0<(s=Input[]),Print@Prime@s]

或者,恰好执行 10,000 次,以 29 个字符表示:

Print@Prime@Input[]~Do~{1*^4}

关于c - 计算第 n 个素数的最短方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260322/

相关文章:

c - 内核中的 Futex 和阻塞

c - C语言中如何将文本文件中的字符放入数组中

programming-languages - Code-Golf:编译并崩溃的最短程序是什么?

code-golf - Code Golf : Reverse quine

c - 1到n之间素数的个数

algorithm - 随机素数

c++ - 使用 XP Visual Styles list 时状态栏控件无法正确调整大小

c - 显示输入分数的最高/最低和平均值 - C 编程

language-agnostic - Code Golf 新年版 - 整数到罗马数字

Python 3.2 数论库