Не работает код на python
class Human:
n = 600851475143 # Делимое
s = 2 # Делитель
def DgunLi(self): # Проверяет делится ли число на n или нет
if self.n % self.s == 0: # Проверяет делится ли число на n или нет
print(self.s) # Выводит значения s которое нечетное и делится на n
self.s += 1 # Добавляет один чтобы запуск шёл процесс дальше
self.xiao() # Перекидавает на фунцию xiao()
else:
self.s += 1 # Добавляет один если не делится
self.xiao() # Перекидавает на на функцию xiao()
def xiao(self): # Первоначальная фунция которая проверяет чётное число или нет
running = True
while running:
if self.n % self.s == 1: # Проверяет четное число или нет
running = False
self.DgunLi() # Даёт доступ к другой функции
else:
self.s =+ 1 # Добавляет 1 к числу s чтобы оно нашло нечетное
Human().xiao() # Вызываю класс Human() и вызываю функцию xiao()
Вот хочу решить 3 задачу эйлера- https://euler.jakumo.org/problems/view/3.html . Хотел зделать так: Есть две функции,вторая проверяет четное число или нет,если нет то добавляет один и по кругу если нечетное то даёт доступ к первой функции. Первая функция проверяет делится ли число на делимое или нет если нет добавляет один и перенаправляем на вторую функцию,если делится на делитель выводит на экран добавляет на один и перенаправляет на вторую функцию.Почему он не работает?
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
val = 600851475143
divider = int(val ** 0.5) + 1
def is_prime(item: int):
return len(list(filter(lambda x: item % x == 0, range(2, item + 1)))) == 1
while divider - 1:
divider -= 1
if (val % divider) == 0 and is_prime(divider):
break
print(divider, int(val / divider), val % divider, sep='\n')
# 6857
# 87625999
# 0
Можно еще вот так:
from itertools import dropwhile
def is_prime(item: int):
return len(list(filter(lambda x: item % x == 0, range(2, item + 1)))) == 1
val = 600851475143
div = iter(range(int(val ** 0.5) + 1, 2, -1))
max_divider, *_ = dropwhile(lambda x: not ((val % x) == 0 and is_prime(x)), div)
print(max_divider)
# 6857

