Форум » Обработка целых чисел » Ошибка в решении 25-204? » Ответить

Ошибка в решении 25-204?

Тузова: Коллеги, добрый день. Нет ли ошибки в записи функции для формирования списка делителей в решении к задаче 25-204? [pre2] def allDivs( n ): q = round( n**0.5 ) divs = [q] if n % q == 0 else [] for d in range(2,q): if n % d == 0: divs.extend( [d, n//d] ) return sorted(divs) print (allDivs(43890))[/pre2] Теряется делитель 210

Ответов - 3

Тузова: Наверное, так правильнее: [pre2] def allDivs( n ): q = round( n**0.5 ) if n % q == 0 and n // q == q: divs = [q] elif n % q == 0 and n // q == q + 1: divs = [q, q + 1] else: divs = [] for d in range(2,q): if n % d == 0: divs.extend( [d, n//d] ) return sorted(divs)[/pre2]

Поляков: Да, спасибо. Вот правильный вариант: [pre2]def allDivs( n ): q = round( n**0.5 ) divs = [] if n % q != 0 else \ [q] if q == n // q else \ [q, n//q] for d in range(2,q): if n % d == 0: divs.extend( [d, n//d] ) return sorted(divs) [/pre2]Я все проверил, на ответы эта ошибка нигде не повлияла.

cabanov.alexey: [pre2] def allDivs( n ): divs = set() for d in range(2,int(n**0.5)+1): if n % d == 0: divs |= {d, n//d} return sorted(divs) print (allDivs(43890))[/pre2]




полная версия страницы