需要提示如何解决这个问题

时间:2015-09-18 07:36:49

标签: python integer wolfram-mathematica

a, b, c, d, e, f, g & h是不同的整数。

如果a*b + c*d = e*f + g*h = n

n的最低价值是什么?

如果我们考虑带有8个循环的8个数字,显然for循环将永远。有没有更简单的方法来解决这个问题?

我需要一些提示来用数学或Python来解决它。

2 个答案:

答案 0 :(得分:1)

您可以使用itertools.combinations来获取集{1..9}中数字的所有组合。然后在min函数中使用生成器表达式来查找预期结果。

>>> S=range(10)
>>> 
>>> from itertools import combinations
>>> min(a*b+c*d for a,b,c,d,e,f,g,h in combinations(S,8) if a*b + c*d == e*f + g*h)

但是,由于这不会给出任何结果,而不是range(10),您可以使用更大的range()

答案 1 :(得分:1)

对于正整数,(1到8)

First@Sort@DeleteCases[({a, b, c, d, e, f, g, h} = #;
      If[(n = a*b + c*d) == e*f + g*h,
       {n, a, b, c, d, e, f, g, h}]) & /@ Permutations[Range[8]], Null]
  

{31,1,7,4,6​​,2,8,3,5}

最低n = 31