Best Short Program

最高のショートプログラム

受賞者:Jeff Weisberg

引用元:https://www.ioccc.org/1994/weisberg.c

審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1994/weisberg.hint

動作

素数を列挙していく。

$ gcc -Dc='n*n>x?p:((m=*(b+1)),N))' -De='(2<<6*sizeof(int))' -Do='(8<<5*sizeof(int))' -DN='((b=t+1),x+=2,x>e?exit(0):o' -Dp='(a-t<o?*(a++)=x:47),printf("%d ",x),N)' -o weisberg weisberg.c

$ ./weisberg
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 ...

解説

発見した素数をテーブルにしておき、各奇数を試し割り法で素数判定していっていると思う。

コード自体は115バイトだが、自己完結はしておらず、コンパイルオプションでマクロを定義して動く。 ちょっとチートっぽいが、2つの定義セットが用意されていて、33554432までの素数を見つける省メモリ版と、MAX_INTまでみつける富豪版にビルドし分けられるというあたりで評価されたと思われる。