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)
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)
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