@ilgiz1

Почему программа не выдает результат?

Напишите программу, которая ищет среди целых чисел,
принадлежащих числовому отрезку [312614; 312651], числа,
имеющие ровно шесть различных натуральных делителей

вот мой код, но он не дает результата
for i in range(312614, 312652):
    dels = []
    for y in range(1, (i//2)+1):
        if i%y==0:
            dels.append(y)
    if len(dels)==6:
        print(i, dels)
    else:
        print('no')
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dmshar
Очень странный вопрос. А какое число, по вашему мнению, из диапазона [312614; 312651], имеет ровно шесть различных натуральных делителей? При том, что у вас написана программа так, что "1" вы тоже считаете делителем.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
1 - это натуральный делитель любого натурального числа, само число - это тоже натуральный делитель самого себя.
Ошибка у вас в том, что проверяете вы до корня из числа и пропускаете делители, которые больше этой величины. Можно и так, но тогда следует учитывать, что каждый делитель имеет пару (divider и value/divider), за исключением случая, когда divider == value/divider.
312628: 1, 2, 4, 78157, 156314, 312628
312651: 1, 3, 9, 34739, 104217, 312651
Ответ написан
Комментировать
@twistfire92
Python backend developer
Попробуйте добавить одну строку в ваш код и увидите почему программа не выдала результат

for i in range(312614, 312652):
  dels = []
  for y in range(1, (i//2)+1):
    if i%y==0:
      dels.append(y)
  print(i, len(dels),  dels)
if len(dels)==6:
  print(i, dels)
else:
  print('no')


Спойлер:
Вы не принимаете само число i за делитель. Так что сравнивать надо не с 6, а с 5, т.к. само на себя любое число 100% делится. тогда пара чисел попадется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы