Автор | Сообщение |
|
Отправлено: 05.06.21 17:04. Заголовок: #25 (4120)
def simpleDividers(n): answer = [] # пустой список d = 2 # начальное значение проверяемого делителя while d * d <= n: # проверяем делители до корня из n if n % d == 0: # если остаток от деления = 0 answer.append(d) # то добавляем в ответ n //= d # делим n на d else: d += 1 # проверяем следующий делитель if n >1 : # если в итоге n > 1 answer.append(n) # добавляем в ответ ещё этот n if n in answer: answer.clear return answer # возвращаем n = 650000 f = 0 k = 0 while k < 4: f = int(sum(simpleDividers(n)) / len(simpleDividers(n))) if f % 37 == 23: k += 1 print (n, f) n += 1 Ответ не сходится в последнем числе 650220 2169
|
|
|
Новых ответов нет
[см. все]
|
|
|
Отправлено: 05.06.21 20:24. Заголовок: Программы "завор..
Программы "заворачивайте" в тэг [ pre2 ]...[ /pre2 ], при этом сохраняются все отступы и применяется моноширинный шрифт. Для 650220 функция возвращает [2, 2, 3, 5, 10837] (что, конечно, неверно) Для функции поиска простых делителей без повторов лучше использовать множество, а не список. def simpleDividers(n): answer = set() d = 2 while d * d <= n: if n % d == 0: answer.add(d) n //= d else: d += 1 if n > 1: answer.add(n) return answer
|
|
|