'''

Project Euler: Problem 14: Longest Collatz sequence

The following iterative sequence is defined for the set of positive integers:

n → n/2 (n is even)

n → 3n + 1 (n is odd)

Using the rule above and starting with 13, we generate the following sequence:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

It can be seen that this sequence (starting at 13 and finishing at 1)

contains 10 terms. Although it has not been proved yet (Collatz Problem),

it is thought that all starting numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one million.

Answer: 837799(共有525个步骤)

'''

import time

startTime = time.clock()

def f(x):

c = 0 #计算考拉兹序列的个数

while x != 1:

if x%2 == 0: #若为偶数

x = x//2

c += 1

else: #若为奇数

x = x*3+1

c += 1

if x == 1:

c += 1 #数字1也得算上

return c

chainItemCount = 0

startingNumber = 0

for i in range(1, 1000000):

t = f(i)

if chainItemCount < t:

chainItemCount = t

startingNumber = i

print('The number %s produces the longest chain with %s items' % (startingNumber, chainItemCount))

print('Time used: %.2d' % (time.clock()-startTime))

互动百科说了,考拉兹猜想--又称为3n+1猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。

判断条件很清楚,所以解题思路也很清晰:把 1-999999 之间的所有数字都拿来判断,计算每个数字分解到1所经历的步骤数,拥有最大步骤数的那个数字(Starting Number)即为解。

解这题,我的破电脑花了29秒。我隐约感觉这题应该有更好的解法,比如我很不喜欢的递归之类的……

python考拉兹猜想_Python练习题 042:Project Euler 014:最长的考拉兹序列相关推荐

  1. python合法关键字是_python练习题-day18

    1.匹配一行文字中的所有开头的字母内容 import re s="i love you not because of who you are, but because of who i am ...

  2. python循环经典例题_python练习题:循环打印嵌套列表

    好久没写博文了,添加一个练习题,选自<head_first_python>~~ python列表:以中括号开始和结束"[]":列表项以逗号","分隔 ...

  3. python计算题库_python练习题-

    Python 练习题库 By 郑红波 2017-12-19 一. 填空题 1. Python 标准库 math 中用来计算平方根的函数是 __________ . ( sqrt ) 2. 在 Pyth ...

  4. python分解完数_Python练习题 014:完数

    [Python练习题 014] 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. -------------------- ...

  5. python基础训练题答案_python练习题-答案

    . Python 练习题库 By 郑红波 2017-12-19 一. 填空题 1. Python 标准库 math 中用来计算平方根的函数是 __________ . ( sqrt ) 2. 在 Py ...

  6. python打印星号菱形_Python练习题 018:打印星号菱形

    [Python练习题 018] 打印出如下图案(菱形): * *** ***** ******* ***** *** * --------------------------------------- ...

  7. python计算分段函数_Python练习题2.2计算分段函数

    本题目要求计算下列分段函数f(x)的值: 输入格式: 输入在一行中给出实数x. 输出格式: 在一行中按"f(x) = result"的格式输出,其中x与result都保留一位小数. ...

  8. python判断能否组成三角形_Python练习题4.16判断是否构成三角形

    输入三角形的三边,判断是否能构成三角形.若能构成输出yes,否则输出no. 输入格式: 在一行中直接输入3个整数,3个整数之间各用一个空格间隔,没有其他任何附加字符. 输出格式: 直接输出yes或no ...

  9. python素数求和编程_Python练习题4.2统计素数并求和

    本题要求统计给定整数m和n区间内素数的个数并对它们求和. 输入格式: 输入在一行中给出两个正整数m和n(1≤m≤n≤500). 输出格式: 在一行中顺序输出m和n区间内素数的个数以及它们的和,数字间以 ...

  10. python数组拼接字符串_Python练习题——数组拼接

    # # 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. # # 示例 1: # 输入: [10,2] # 输出: "102" # # ...

最新文章

  1. php redis删除所有key,redis中批量删除key的方法
  2. Fedora 30系统下,用g++编译opencv项目
  3. php7扩展sphinx,php7进行安装sphinx简单记录
  4. Android 三星手机不能调起应用市场
  5. 一种单片机支持WiFi的应用——SimpleWiFi在单片机中的应用
  6. android底部显示不出来,Android studio 底部的状态栏不见了如何显示
  7. 使用AJAX如何得到数据库当中的值!
  8. 苏州十大IDC机房排名,苏州idc服务商实力排名
  9. 我能想到最赛博朋克的事,就是为全世界的工程师雕刻一尊“虚拟分身”
  10. 新品上架免费推广,新品上架前的准备
  11. vue ie8 兼容方案
  12. html字体加粗且变色,简单的html代码 加粗 加亮 字型加大 变色 分别是写什么`
  13. 构建统一CIM数字底盘,实现基于BIM的全流程管控
  14. 设计模式之禅【状态模式】
  15. 什么是前端、什么是后端
  16. 我的足迹(Appinventor练习)
  17. 备份android分区,备份分区
  18. 测试必会之 Linux 三剑客之 grep
  19. 用计算机处理信息 说课,《信息和信息处理工具》说课稿范文
  20. mysql 按月 季度 统计数据

热门文章

  1. 新年贺卡php,幼儿新年贺卡内容 元旦贺卡图片手工制作
  2. 数商云大宗商品交易平台案例:打造B2B大宗电商供应链服务系统,落地产业互联网
  3. 【华为机试真题 Python实现】勾股数元祖
  4. ffmpeg开发打印音视频meta信息
  5. 任泉自曝在Star VC年薪100万 今年重点投资互联网金融
  6. 浅谈打开网页速度慢的原因和解决方法
  7. Convex Optimization 读书笔记 (2)
  8. 兵法三十六计是哪些?
  9. 机器学习(二)--新加坡国立大学寒假学习项目总结
  10. vim 方向键和backspace乱码