Форум » Обработка целых чисел » Задание 25 (условие задачи 102) » Ответить

Задание 25 (условие задачи 102)

dim18: Здравствуйте! Решение данной задачи дает правильный ответ, если в функции all_divs исключить из делителей единицу и само число. Такой вводной в условии нет, как, например, в других задачах. Также, означает ли запись в условии задачи "различных простых делителей" необходимость исключения одного из корней, если число является квадратом? Подскажите, пож., в чем ошибка алгоритма или уточните условие задачи. [pre2] def all_divs(i): a = [] for d in range(1, round(i ** 0.5)+1): if i % d == 0: a.append(d) a.append(i // d) return a def check(i): a = [] for d in range(1, round(i ** 0.5) + 1): if i % d == 0: a.append(d) a.append(i // d) if len(a) == 2: return True return False e = [] for c in range(268312, 336492 + 1): b = all_divs(c) d = [i for i in b if check(i)] if len(d) != 0 and c / max(d) in d: e.append(c) print(len(e), min(e)) # ответ 14380 268313 (19787 268313) # Среди целых чисел, принадлежащих числовому отрезку [268312;336492], найдите числа, # которые представляют собой произведение двух различных простых делителей. # Запишите в ответе количество таких чисел и минимальное их них. [/pre2]

Ответов - 2

Поляков: [pre2] def isPrime(i): for d in range(2, round(i ** 0.5) + 1): if i % d == 0: return False return True def check(i): for d in range(2, round(i ** 0.5)+1): if i % d == 0: if d != i // d and isPrime(d) and isPrime(i//d): return True return False e = [] for c in range(268312, 336492 + 1): if check(c): e.append(c) print(len(e), min(e))[/pre2]

dim18: Спасибо.



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