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