【发布时间】:2010-02-14 06:24:25
【问题描述】:
到“计算第n个素数”的最短C代码是什么?
重要字符中最短,即分号、非空白字符、关键字和逗号的数量。
输入:
整数 n 来自标准输入,由新行分隔。输入将被 EOF 终止。
输出:
在输入 n 之后,将第 n 个素数打印到标准输出,并用新行分隔。
(您可以假设素数 n
测试用例:
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]));
}
对于这个问题,可读性不是问题。在时间和内存方面更昂贵但满足约束的代码在这里会被认为更好。
【问题讨论】:
-
这就是代码高尔夫!!!最少的击键次数。帮助您更好地理解您正在编码的语言。
-
@nthrgeek,你也应该看到meta.stackexchange.com/questions/24242
-
您能否详细解释一下输入或举个例子?目前还不完全清楚你到底应该做什么。例如,您说“每个 line 将有许多 N 值,每个值由 new line 这样分隔”。我认为输入输出的示例会有所帮助。
-
代码必须是 C 语言吗?如果没有,请删除“c”标签。
-
我从来都不喜欢 SO 上的 code-golf,但由于语言限制,这简直无法忍受。不是一个真正的问题。甚至没有关闭。