Collatz 猜想探索器
任取一个正整数 n:偶数就除以 2,奇数就乘 3 加 1。据说无论从哪个数出发,最终都会掉进 4 → 2 → 1 的循环——但至今没人能证明它。
"""Collatz 猜想探索器 —— 一个循环了就会上瘾的小实验。"""
def collatz_sequence(n: int) -> list[int]:
seq = [n]
while n != 1:
n = n // 2 if n % 2 == 0 else 3 * n + 1
seq.append(n)
return seq
def longest_chain_under(limit: int) -> tuple[int, int]:
"""返回 (起始数字, 链长),找出 limit 以内链条最长的数。"""
best_num, best_len = 0, 0
for start in range(1, limit):
length = len(collatz_sequence(start))
if length > best_len:
best_num, best_len = start, length
return best_num, best_len
if __name__ == "__main__":
print("27 的 Collatz 序列(前 20 步):")
seq = collatz_sequence(27)
print(" → ".join(map(str, seq[:20])) + " → …")
print(f"总共走了 {len(seq) - 1} 步到达 1。\n")
num, length = longest_chain_under(100_000)
print(f"10 万以内链条最长的起始数字是 {num},共 {length - 1} 步。")下载源码: collatz.py