Напишите программу (на питоне), которая ищет среди целых чисел, принадлежащих числовому отрезку [125873; 136762], числа, имеющие ровно 5 различных делителей. Выведите эти делители для каждого найденного числа в порядке возрастания.

Ответы

Ответ дал: FANTSCR1N
0

for number in range(125873, 136763):

   divisors = []

   for divisor in range(2, number // 2 + 1):

       if number % divisor == 0:

           n = divisor

           divisors.append(divisor)

           for _ in range(3):

               n *= divisor

               divisors.append(n)

           if n == number:

               print(f'число = {number}, делители = 1, {", ".join(str(s) for s in divisors)}')

           break


Аноним: без словаря, только список дополнительный
Аноним: ответы такие же как у тебя в первом варианте, только более 3-х минут быстрее
FANTSCR1N: Дак это не влияет на скорость сильно, там хоть как ответ 1
Аноним: ответ 1, скорость 40 сек и 3 мин 50 сек - вроде как разница есть
Аноним: запутал я тебя, извини
FANTSCR1N: ну смотри этот вариант 14 секунд работает
FANTSCR1N: 125873, 536763 сделал такой промежуток до второго числа искалось 5 минут
Аноним: запустил твой код, ищет уже 7 мин, нашел числа 130321 и 279841 - продолжает искать
Аноним: аааааа. ты числа не те в range втулил))))
Аноним: а так оч быстро ищет, класс!
Ответ дал: Аноним
0

Ответ:

ищет 40 сек

for j in range(125873, 136763):

   count = []

   for i in range(2, j // 2 +1):

       if j % i == 0:

           count.append(i)

           if len(count) > 3:

               break

   if len(count) == 3:

       print(f'число = {j}, делители = 1, {", ".join(str(s) for s in count)}, {j}')

   count.clear()

Объяснение:

Вас заинтересует