• 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

    • DeHuq2
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      3 months ago
      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)
      
      • DeHuq2
        link
        fedilink
        arrow-up
        2
        ·
        3 months ago

        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)

          • DeHuq2
            link
            fedilink
            arrow-up
            2
            ·
            edit-2
            3 months ago

            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