Предмет: Информатика, автор: Аноним

Информатика ЕГЭ, 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

Объяснение:

Приложения:

Аноним: Спасибо, посмотрю. Единственное задание, которое я до сих пор не смог нормально освоить)
Аноним: Как доделать, чтобы выводил множители числа?
Аноним: n=int(input())
a=set()
d=1
while d*d<=n:
if n%d==0:
a.add(d)
a.add(n//d)
d+=1
print(a)
Похожие вопросы
Предмет: Математика, автор: Merei2006