Как зделать чтобы прошлось по всем числам range и закончило работу

class Kod:
    n = 1 #переменая
    def sumon(self):  #Названия функции
        running = True
        while running:
            for i in range(1, 21): #Хочу чтобы он прошолся по всем элементам
                if self.n % i == 0: #Хочу чтобы он проверил что число делится на все числа от 1 до 20
                    print(self.n) #Выводит на экран
                    return #И заканчивает
            else:
                self.n += 1 #В случае если число не подходит добавляет 1

Kod().sumon()

Код в работе

Текст: Хочу решить 5 задачу эйлера - https://euler.jakumo.org/problems/view/5.html Хочу зделать чтобы он проходился по всем элементам range и проверяет делится ли без остатка на все элементы range. И таким макаром найти число которое делится на все числа от 1 до 20, скажите пожалуйста как это зделать и возможно ли это?если нет то как можно заменить range. Надеюсь достаточно подробно прокомендировал код. Будут вопросы по коду спрашивайте.Буду благодарен за любою инфу)


Ответы (2 шт):

Автор решения: vp_arth

Чего там перебирать-то?

20 = 2 * 2 * 5 -> 2^2 * 5
19 = 19
18 = 2 * 3 * 3 * 3 = 2 * 3^3 <- 3
17 = 17
16 = 2 * 2 * 2 * 2 = 2^4 <- 2
15 = 3 * 5
14 = 2 * 7
13 = 13
11 = 11
10 = 2 * 5
 9 = 3 * 3
 8 = 2 * 2 * 2 = 2^3
 7 = 7
 6 = 2 * 3
 5 = 5
 4 = 2 * 2
 3 = 3
 2 = 2
 1 = 1

Смотрим на максимальные степени в наличии:

X = 2^4 * 3^2 * 5 * 7 * 11 * 13 * 17 * 19 = 232'792'560

Если таки хочется перебирать, то как-то так:

x = 20
while True:
  fail = False
  # for d in range(11,20):
  for d in [5, 7, 9, 11, 13, 16, 17, 19]:
    if x % d != 0:
      fail = True
      break
  if fail:
    x = x + 20
    continue
  print(f'Solution is {x}')
  break;
→ Ссылка
Автор решения: Sergey Derevianko

a = 0
for i in range(40,1000000):
    for n in range(2,21):
        k = i%n
        if k == 0:
            a+=1
    if a == 19:
        print(i)
        break
    a = 0


Вот, как-то очень давно делал её, может тебе поможет.

→ Ссылка