Форум » Обработка целых чисел » Не могу понять в чём ошибка » Ответить

Не могу понять в чём ошибка

muno: Условие: Особыми будем называть нетривиальные делители числа, все цифры которых чётные. Нетривиальными считаются все делители, кроме 1 и самого числа. Пусть D(N) – шестой по величине (считая с наибольшего) особый делитель натурального числа N. Если у числа N меньше 6 различных особых делителей, то принимаем D(N) = 0. Найдите 5 наименьших натуральных чисел, превышающих 400 000 000, для которых D(N) > 0. В ответе запишите для каждого найденного N сначала значение D(N), а затем общее количество особых делителей (в порядке возрастания соответствующих чисел N). Моё решение: В нём не находятся почему-то 3 делителя особых [pre2] from math import sqrt def chet(j): #Проверка чётности всех цифр числа ch = str(j) if (ch.count('1')==0) and (ch.count('3')==0) and (ch.count('5')==0) and (ch.count('7')==0) and (ch.count('9')==0): return True else: return False for i in range(400000001, 400000042): q = round(sqrt(i)) delit = [] if q*q ==i and chet(q)==True: delit +=[q] for j in range(2, round(sqrt(i))): if i % j ==0 and chet(j)==True: delit += [j] if chet(i//j)==True: delit += [i//j] if len (delit)>=6: print(*sorted(delit)[::-1][:6],len (delit)) [/pre2]

Ответов - 1

Поляков: Вы проверяете один делитель и, если он не подходит, проверяете второй. Но может быть так, что первый не подходит, а второй подходит.



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