I need to find the longest row of non primes below 10000.
How to print only that last line that's in my output ? Without max function and without simple numerical constraint.
I think it only needs some small adjustment, just don't see where or how.
priemen = []
for x in range(2,10000): #prime generator
tel = 0
for deler in range(1,x):
if x % deler == 0:
tel += x % deler == 0
if tel <2:
priemen.append(x)
a = priemen[0]
b = priemen[1]
maxrow = 0
for next in priemen[2:]:
a = b
b = next
row = b - a - 1
if row > maxrow:
maxrow = row
print("The longest row starts at", a+1, "and stops at", b-1, "and is", maxrow, "long.")
------------------
Output:
The longest row starts at 8 and stops at 10 and is 3 long.
The longest row starts at 24 and stops at 28 and is 5 long.
The longest row starts at 90 and stops at 96 and is 7 long.
The longest row starts at 114 and stops at 126 and is 13 long.
The longest row starts at 524 and stops at 540 and is 17 long.
The longest row starts at 888 and stops at 906 and is 19 long.
The longest row starts at 1130 and stops at 1150 and is 21 long.
The longest row starts at 1328 and stops at 1360 and is 33 long.
The longest row starts at 9552 and stops at 9586 and is 35 long.
I only need it to print the last one
Thanks!!
You need to save the values of a
and b
into separate variables so that you can print them after the loop.
b = priemen[1]
maxrow = 0
for n in priemen[2:]:
a = b
b = n
row = b - a - 1
if row > maxrow:
maxrow = row
a_max = a
b_max = b
if maxrow != 0:
print("The longest row starts at", a_max + 1, "and stops at", b_max - 1, "and is", maxrow, "long.")
Other things to note:
a_max
and b_max
- but the final if
test is to guard against any situation where they have not yet been setnext
as n
, because next
is name of a builtina = priemen[0]
line is pointless so I have removed it