Как зделать чтобы прошлось по всем числам 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
Вот, как-то очень давно делал её, может тебе поможет.
