Петя задумал составное натуральное число N
, меньшее 1000
. Он выписал на доску все натуральные делители N
, не равные 1
. Оказалось, что два наименьших числа на доске различаются на 41
.
Чему может быть равно N
? Укажите все возможные варианты.
python
for b in range(2, 1000):
a = b + 41
if N % a == 0 and N % b == 0:
print(N) # выводим значение N, если найдено подходящее
Однако, данный код не завершится до конца, так как нам не известно значение N. Поэтому введем некоторые оптимизации.
Заметим, что если a и b являются делителями числа N, то и их сумма a + b также будет делителем N. В этом случае, число N должно быть кратно 2(a + b).
Добавим эту проверку в код:
python
for b in range(2, 1000):
a = b + 41
if N % (2 * (a + b)) == 0 and N % a == 0 and N % b == 0:
print(N) # выводим значение N, если найдено подходящее
Теперь код будет работать быстрее. Но можно сделать еще одну оптимизацию. Заметим, что N максимальное может быть равно 999, так как оно должно быть меньше 1000. Тогда a = b + 41 максимальное будет равно 958. Поэтому вместо перебора всех значений b от 2 до 999, можно перебирать значения от 2 до 958.
Итоговый код:
python
for b in range(2, 959):
a = b + 41
if N % (2 * (a + b)) == 0 and N % a == 0 and N % b == 0:
print(N) # выводим значение N, если найдено подходящее
Далее, мы должны сами ввести числа из задачи и запустить код. Он найдет все возможные значения N в соответствии с условием задачи.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет