Как найти самую длинную серию составных чисел ниже 10000? Как мне распечатать только самую длинную серию?

Это мой код:

series = 0

for counter in range (1, 30):
    if counter > 1:
        for i in range (2, counter):
            if (counter % i) == 0:
                series += 1
                break
        else:
            print ("The longest series of composite numbers under 10.000 starts at %d and ends at %d the series is %d long" % ((counter-series), counter, series))
            series = 0

Я хотел бы, чтобы он дал только самые длинные серии для печати, я думаю, что мне нужно где-то хранить ряд переменных и проверять каждую итерацию, если новое значение серии выше, чем предыдущая, и менять местами, если она выше, а затем просто печатать один раз. Но я не могу понять, как эффективно хранить и обменивать.

Надеюсь, это достаточно ясно

1 ответ

Решение

Я использовал цикл for, и это сработало, вот мой код:

series = 0
b = 0 
a = 0

for num in range (1, 10000):
    for j in range (2, num):
        if (num % j) == 0:
            series += 1
            break 

    else:
        if series > b:
            b = series
            a = num 
            series = 0
        else: 
            series = 0
print ("De langste reeks niet-priemgetallen onder de 10.000 begint op %d en eindigt op %d" % (((a-b), a-1)))   
print ("de reeks is %d lang" % b) 
Другие вопросы по тегам