Skip Navigation

General Discussion Thread - Juche 113, Week 12

Welcome again to everybody! Make yourself@home. In the time-honoured tradition of our group, here is the weekly discussion thread.

Matrix homeserver and space
Theory discussion group on Matrix
● Find theory on ProleWiki, marxists.org, Anna's Archive and libgen; audio versions by Socialism For All

222

You're viewing a single thread.

222 comments
  • What did I do wrong? I could look up proper solution to this exercise but I would still like to know what exactly is off. I feel like its something super obvious and stupid.

    • general advice: divide your code into multiple functions (e.g. instead of arbitrarily using '0' to end a loop, put the loop in its own function with a descriptive name and return when appropriate) and check if those functions produce the expected output

      also, post your code as a Markdown code block, not a screenshot

      • num = []
        Ms = []
        while len(num) <= 5:
            for f in range(1,1000000):
                a = 452021 + f
                mmin = 0
                mmax = 0
                while mmin == 0:
                    for n in range(2,a-1):
                        if a % n == 0:
                            mmin = n
                        if n == a-1 and a % n != 0:
                            mmin = '0'
                while mmax == 0:
                    for n in range(a-1,2,-1):
                        if a % n == 0:
                            mmax = n
                        if n == 2 and a % n !=0:
                            mmax = '0'
                M = int(mmax) + int(mmin)
                if M % 7 == 3:
                    num.append(a)
                    Ms.append(M)
        print(Ms)
        print(num)
        
        • As a code block.

          I.e:

          ```
          Your code
          goes here
          ```

          Your code
          goes here
          
        • I figured it out! I just needed to use break.

          num = []
          Ms = []
          def Fmmin(va):
              while va == 0:
                  for n in range(2, number):
                      if number % n == 0:
                          va = n
                          break
                      if n == number - 1 and number - 1 % n != 0:
                          va = '0'
              return va
          def Fmmax(va):
              while va == 0:
                  for n in range(number-1, 1, -1):
                      if number % n == 0:
                          va = n
                          break
                      if n == 2 and number % n != 0:
                          va = '0'
              return va
          
          for f in range(1,10000000):
              number = 452021 + f
              mmin = 0
              mmax = 0
              mmin = Fmmin(mmin)
              mmax = Fmmax(mmax)
              if int(mmax) > 0 and int(mmin) > 0:
                  M = mmax + mmin
                  if M % 7 == 3:
                      num.append(number)
                      Ms.append(M)
              if len(num) >= 5:
                  break
          print(Ms)
          print(num)
          
          • You can improve the code by returning n and 0 respectively, no need to use a loop variable. The while va == 0 is either unnecessary (if it runs once) or can cause an endless loop (since nothing changes between iterations)

            • Fixed it now!

              def Fmmin():
                  for n in range(2, number):
                      if number % n == 0:
                          return n
                      if n == number - 1 and number - 1 % n != 0:
                          return 0
              def Fmmax():
                  for n in range(number-1, 1, -1):
                      if number % n == 0:
                          return n
                      if n == 2 and number % n != 0:
                          return 0
              
You've viewed 222 comments.