- 论坛徽章:
- 4
|
本帖最后由 ssfjhh 于 2013-06-01 17:13 编辑
回复 13# wpppl
要想找走马灯数,当然要先有定义,然后才能写程序找。因为目前只有一个走马灯数,没有办法总结规律,所以我自己限制了这样几个条件,基于这样的条件,我没有发现除142857之外的走马灯数。
一、数字中不能有重复字符,所以只可能是9位以内的数字。
二、一个n位的走马灯数分别乘以1-n均能重复出现这个走马灯数所出现的字符。(事实上,142857这几个数字是顺序出现的,想实现这个编程稍嫌烦琐,我没有实现,先找一找试试有没有再说,另外为什么是1-n?为什么不是1-6?没有为什么,我自己做出的限制,如果你觉得条件太严格,你自己可以修改代码,放宽这个限制。)
三、个位数不算走马灯数。
基于这三个条件,我只找到了142857,程序已经运行过了。
代码如下:- def cyclicnumber():
- for n in range(2,10):
- count = 0
- for i in range(10**(n-1),10**n//n):
- lst = sorted(str(i))
- for j in range(2,n+1):
- if sorted(str(i*j)) != lst:
- break
- else:
- count += 1
- for k in range(1,n+1):
- print("{} × {} = {}".format(i, k, i*k))
- else:
- if count:
- print("Found {c} {l}-digit cylic number{s}".format(c = count, l = n, s = 's' if count > 1 else ''))
- else:
- print("No {}-digit cylic number exists!".format(n))
- if __name__ == "__main__":
- cyclicnumber()
复制代码 |
|