Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [312792; 312992], числа:
1) Имеющие ровно 4 различных делителя
2) Произведение цифр наибольшего делителя меньше 50.
Для найденных чисел выведите сумму делителей, два наименьших делителя в порядке возрастания.
Answers & Comments
Ответ:
313968 1 421
357504 1 7
315952 1 103
315052 1 157
375492 1 5
357616 1 7
Объяснение:
from math import sqrt
def mult(n):
mult = 1
while n:
digit = n % 10
mult = mult * digit
n //= 10
if mult < 50:
return True
else:
return False
for x in range(312792, 312993):
q = set()
for t in range(1, round(sqrt(x)) + 1):
if x % t == 0:
q.add(t)
q.add(x // t)
if len(q) == 4 and mult(sorted(q)[-1]):
print(sum(sorted(q)), sorted(q)[0], sorted(q)[1])