I would like to know all the combinations of 5 numbers between 0 and 100 that add up to 100

Asked

Viewed 159 times

-2

Good night,

I need to find all combinations of 5 natural numbers, between 0 and 100 (can be 0,0,0,100 (can repeat)) that sum up to 100, I adapted the code below to do this, but for some reason the code falls into a loop.

I know that these combinations of 5 natural numbers (can repeat) for the numbers between 0 and 100 generate 10,510,100,501 possibilities, but I only need the combinations that add up to 100.

from itertools import combinations
lis = [0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,58,58,58,58,58,59,59,59,59,59,60,60,60,60,60,61,61,61,61,61,62,62,62,62,62,63,63,63,63,63,64,64,64,64,64,65,65,65,65,65,66,66,66,66,66,67,67,67,67,67,68,68,68,68,68,69,69,69,69,69,70,70,70,70,70,71,71,71,71,71,72,72,72,72,72,73,73,73,73,73,74,74,74,74,74,75,75,75,75,75,76,76,76,76,76,77,77,77,77,77,78,78,78,78,78,79,79,79,79,79,80,80,80,80,80,81,81,81,81,81,82,82,82,82,82,83,83,83,83,83,84,84,84,84,84,85,85,85,85,85,86,86,86,86,86,87,87,87,87,87,88,88,88,88,88,89,89,89,89,89,90,90,90,90,90,91,91,91,91,91,92,92,92,92,92,93,93,93,93,93,94,94,94,94,94,95,95,95,95,95,96,96,96,96,96,97,97,97,97,97,98,98,98,98,98,99,99,99,99,99,100,100,100,100,100]

for i in (4, len(lis)):
    for comb in combinations(lis, i):
       if sum(comb) == 100:
           print (comb,'= 100')

Thank you so much for your help

  • I see no other option but to test the "10,510,100,501 possibilities" (author information) of permutations. I did this example here using a simplified list but doing it using your list will require a lot of memory and processing time.

  • @Augustovasques The generative equation seems to be very simple: All numbers from 0 to 100 repeated 5 times each.

  • @After I wrote that I saw.

2 answers

2

  1. Traverse a of 0 until 100.
  2. Traverse b of 0 until 100 - a.
  3. Traverse c of 0 until 100 - a - b.
  4. Traverse d of 0 until 100 - a - b - c.
  5. e = 100 - a - b - c - d.
  • Yes, that’s correct in theory, but my question is how could I program a python code to do that.

-1

I found this code, which presents all possible combinations for 0 to 100 in the 5 "houses", but I couldn’t get it to list only the values that add up to 100.

import itertools

for i in intertools.product [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],repeat=5):

print(i)
  • Just use the code you have already passed in another comment (basically just change the list) - although, comes instead of putting this list with all the numbers, you can just use range(101), which already generates the sequence of all numbers between 0 and 100

  • Please [Dit] the question with this information, as it is not an answer...

Browser other questions tagged

You are not signed in. Login or sign up in order to post.