• DeHuq2
    link
    fedilink
    arrow-up
    2
    ·
    8 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
        8 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