Best Numerical Obfuscation

最高の数値的難読化

受賞者:John Dalbec

引用元:https://www.ioccc.org/1996/dalbec.c

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

動作

素数列挙と見せかけて、素数でないものを含むこともある列挙。

$ gcc -o dalbec dalbec.c

$ ./dalbec
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 ... 2029 2039 2047 2053 2063 ...

2047は23×89なので素数ではない。

引数に3を与えても、121=11×11が含まれている。

$ ./dalbec 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 103 107 109 113 121 127 131 ...

解説

底aとする強い確率的素数を列挙するプログラムとなっている。

デフォルトでは底2で、この場合最初に現れる擬素数は2047と知られている。コマンドライン引数は底の指定で、底3の場合の最初の擬素数は121である。

比較的短いコードだが、mainの再帰によっていろんな計算をしていてややこしい。識別子はIO10で難読化されている。