转帖:Euler's Sum of Powers Conjecture
存不存在四个大于1的整数的五次幂恰好是另一个整数的五次幂?
暴搜:O(n^4)
用dictionary:O(n^3)
1 import itertools 2 3 def euler(m): 4 """Yield tuples (a, b, c, d, e) such that a^5 + b^5 + c^5 + d^5 = e^5, 5 where all are integers, and 1 < a ≤ b ≤ c ≤ d < e < m.""" 6 powers = [e**5 for e in range(2, m)] 7 pairs = {sum(pair): pair 8 for pair in itertools.combinations_with_replacement(powers, 2)} 9 for pair1 in pairs: 10 for e5 in powers: 11 pair2 = e5 - pair1 12 if pair2 in pairs: 13 yield fifthroots(pairs[pair1] + pairs[pair2] + (e5,)) 14 15 def fifthroots(nums): 16 "Sorted integer fifth roots of a collection of numbers." 17 return tuple(sorted(int(round(x ** (1/5))) for x in nums))