Предмет: Информатика,
автор: Аноним
Информатика ЕГЭ, 25 задание
Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа 18 получим: 18 = 18*1 = 9*2 = 6*3, множество разностей содержит числа 17, 7 и 3. Подходящей будем называть пару сомножителей, разность между которыми не превышает 110. Найдите все натуральные числа, принадлежащие отрезку [1000000; 1500000], у которых есть не менее трёх подходящих пар сомножителей. В ответе перечислите найденные числа в порядке возрастания, справа от каждого запишите наибольший из всех сомножителей, образующих подходящие пары.
Аноним:
..
Ответы
Автор ответа:
1
Ответ:
1)Универсальный, но долгий
for i in range(1000000,1500001):
d=1
k=0
while d*d<=i:
if i%d==0:
if i//d-d<=110:
k+=1
if k==3:
print(i)
break
d+=1
2) Быстрый , но значения для второго цикла необходимо высчитывать вручную
for i in range(1000000,1500001):
d=1
k=0
a=set()
for j in range(940,1300):
if i%j==0:
if i//j-j<=110 and i//j-j>=0:
a.add(i//j-j)
if len(a)==3:
print(i)
break
Объяснение:
Приложения:

a=set()
d=1
while d*d<=n:
if n%d==0:
a.add(d)
a.add(n//d)
d+=1
print(a)
Похожие вопросы
Предмет: Русский язык,
автор: noroalinaaa
Предмет: География,
автор: ase4ka5595
Предмет: Русский язык,
автор: alsu6279
Предмет: Математика,
автор: Merei2006