转帖: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))

 

posted on 2018-11-30 15:50  MicN  阅读(271)  评论(0编辑  收藏  举报