# Find all non-negative integer solutions of $a+b+c+d+e = 8$ in Sagemath

Find all non-negative integer a, b, c,d, e such that

$$a+b+c+d+e = 8$$

Is there any method for this? I have no idea. I can just fix the limit.

edit retag close merge delete

( 2017-02-11 14:28:41 +0200 )edit

Sort by ยป oldest newest most voted

If the order of a, b, etc. matters:

sage: IntegerVectors(8, 5)
Integer vectors of length 5 that sum to 8
sage: list(IntegerVectors(8, 5))
[[8, 0, 0, 0, 0],
[7, 1, 0, 0, 0],
[7, 0, 1, 0, 0],
[7, 0, 0, 1, 0],
[7, 0, 0, 0, 1],
[6, 2, 0, 0, 0],
[6, 1, 1, 0, 0],
[6, 1, 0, 1, 0],
[6, 1, 0, 0, 1],
...


If you don't care about the order:

sage: Partitions(8, max_length=5)
Partitions of the integer 8 satisfying constraints max_length=5
sage: list(Partitions(8, max_length=5))
[[8],
[7, 1],
[6, 2],
[6, 1, 1],
[5, 3],
[5, 2, 1],
[5, 1, 1, 1],
[4, 4],
[4, 3, 1],
[4, 2, 2],
[4, 2, 1, 1],
[4, 1, 1, 1, 1],
[3, 3, 2],
[3, 3, 1, 1],
[3, 2, 2, 1],
[3, 2, 1, 1, 1],
[2, 2, 2, 2],
[2, 2, 2, 1, 1]]

more

While this particular example could be easily done without Sage, you can have a look at Mixed Integer Linear Programming as a general method, see http://doc.sagemath.org/html/en/refer... and http://doc.sagemath.org/html/en/thema...

more