множество разностей будет содержать не меньше трёх элементов. Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей.
Например, для числа 16 получим: 16 = 16*1 = 8*2 = 4*4, множество разностей содержит числа 15, 6 и 0.
Найдите все натуральные числа, принадлежащие отрезку [1 000 000; 2 000 000], у которых составленное описанным способом множество разностей будет содержать не меньше трёх элементов, не превышающих 100. В ответе перечислите найденные числа в порядке возрастания.
Тренировочный вариант №2 от 10 декабря 2020 года СтатГрад Вариант ИН2010201
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def f(n): d = int(n ** 0.5) - 51 k = 0 while d*d <= n: if n%d == 0: if n // d - d <= 100: k += 1 if k == 3: break d += 1 return k for i in range(10 ** 6, 2*10**6 +1): if f(i) >= 3: print(i) |
ИЛИ (без функции)
|
1 2 3 4 5 6 7 8 9 10 11 12 |
for i in range(10 ** 6, 2*10**6 +1): d = int(i ** 0.5) - 51 k = 0 while d*d <= i: if i % d == 0: if i // d - d <= 100: k += 1 if k == 3: break d += 1 if k >= 3: print(i) |
1113840
1179360
1208844
1499400
Ответ:
1113840
1179360
1208844
1499400
