首页 > 学院 > 开发设计 > 正文

ahalei_25.26

2019-11-06 06:31:22
字体:
来源:转载
供稿:网友

克拉兹问题是一个简单有趣而又没有解决的数学问题。这个问题是由L. Collatz在1937年提出的。   问题如下:   (1)输入一个正整数n;   (2)如果n=1则结束;   (3)如果n是奇数,则n变为3n+1,否则n变为n/2;   (4)转入第(2)步。 举一个例子:n=13的时候,经历10步可以达到1。 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 25.请问10000以内,哪个数变为1需要转化的步骤多。 26.请问1000000以内,哪个数变为1需要转化的步骤多。

"""@author: vllen"""def v2k(v, dict0): '''v_max2k''' for k in dict0.keys(): if dict0[k] == v:#默认最大值时key唯一,不然list.append return kdef colla(num): '''main''' dict1 = {} for i in range(1, num+1): ii = i m = 0 while i > 0: if i == 1: break if i > 1 and i % 2 == 0: i = i / 2 m = m + 1 elif i > 1 and i % 2 != 0: i = 3*i + 1 m = m + 1 dict1[ii] = m v_max = max([x for x in dict1.values()]) return v2k(v_max, dict1)colla(1000000)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表