此处的目标是写短代码而非高效的代码,因此直接循环计算$\lceil\sqrt{23456789}\rceil=4844$以内整数的整除性来判断素性。
用位运算生成1到9的所有子集,用九位二进制数第j位(从右往左,最右是第0位)是否为1来表示子集中是否包含j+1,再转换为对应的、各数位上的数字严格递增的整数。
最终代码只有一行。
代码长度:138字节 vs. 全站第一:68字节。
for d in sorted([int(''.join(str(j+1)*(c>>j&1)for j in range(9)))for c in range(2,511)]):all(d%i for i in range(2,4844)if i<d)and print(d)
|