I wrote a set of codes to calculate a Diophantine equation:
bestSoFar = 0     
packages = (6,9,20)   
numMc = 0
guess= 0
possibn = []
for n in xrange(1, 150):   
   for a in xrange(0, (n/ packages[0]) +1):
       for b in xrange(0,(n/ packages[1]) +1):
           c = (n - packages[0]* a - b * packages[1]) / packages[-1]
           numMc = packages[0] *a + packages[1] * b + packages[-1] * c
           if numMc == n and n not in possibn:
               possibn.append(n)
               print possibn
               if len(possibn) >6 and possibn [-1] - possibn[-6] == 5:
                  bestSoFar = n
                  break
The original problem set is designed by the MIT course. Basically it is to calculate the number of McNuggets that could be bought by arranging the ratio of packages-in-different-size ( McDonald does 6,9,20 McNuggets in a package). Say, 21 McNuggets could be bought by buying two 6-McNuggets and one 9-McNuggets. if the number of McNuggets are possible to be bought in exact quantity of packages, I store them into a list. It is found that if 6 consecutive numbers are also possible to be bought in exact quantity, the remained numbers could also be possible.
From my code the result of bestSoFar=149 while the expected answer is 40. The reason would be that it keeps looping until n reaches 149. I would like to stop right at 40 ( with the break statement). However, it fails and I am seeking the advices for you all. Also, if there is anyway to program the problem faster/easier, I am happy to know and learn it too.
Thank you so much. Casey
 
     
     
    