幸运数
|
幸运数是从一个初始数列开始,经由一些列筛选步骤后所得的数列。
考虑所有奇数组成的初始自然数列$a_n=2n-1$。
依次取$k=2,3,4,\ldots$,每次删去数列中的第$a_k,2a_k,3a_k,\ldots$项,并将所得的数列作为下一步的初始数列a。
下例展示了这一过程:
初始,取k=2,第2项的值是3:
1 3 5 7 9 11 13 15 …
^ X X
删除第3、6、9、12。。。项后得到新数列,接下来取k=3,此时第3项的值是7:
1 3 7 9 13 15 19 21 …
^ X
删除第7、14、21、28。。。项后得到新数列。。。:
1 3 7 9 13 15 21 25 …
打印该数列的前1000项,每个数单独一行。
|
本题难度:
|
解答
|
容易看出$a_k\ge k$总是成立,因此按题意边删边打印即可。
最终代码有三行。
代码长度:79字节 vs. 全站第一:55字节。
k=1
a=list(range(1,9999,2))
while k<1001:del a[a[k]-1::a[k]];print(a[k-1]);k+=1
|
| |