「 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]));
}
この問題では、可読性は問題ではありません。時間とメモリの点でコストがかかるが、制約を満たすコードは、ここではより良いと見なされます。