Python, циклы и итерации

#python

#python

Вопрос:

Определите приведенный ниже метод для возврата наименьшего множителя произвольного целого числа. Наименьший коэффициент — это наименьшее число, большее 1, которое будет равномерно разделено на параметр (который будет равен 2 или выше).И это мой код, я не знаю, почему он неверен.

 def first_factor(n):
    for num in range(2,n):
        if n % num == 0 and sqrt(n):
            return num
  

Комментарии:

1. разместите код здесь, а не в виде скриншота.

2. В чем именно проблема?

3. Я не знаю, почему неверно, не могли бы вы мне помочь, спасибо

4. @Xuan для вашего недавно удаленного вопроса вот начало repl.it/EhJz/1 🙂

Ответ №1:

Вы должны использовать квадратный корень из числа в range , а не как одно из условий.

 def first_factor(n):
    for num in range(2, int(n**0.5) 1):
        if n % num == 0:
            return num
  

Комментарии:

1. Извините, этот код неверен, не могли бы вы мне помочь, спасибо.

2. @Xuan — Каким образом неверно? Для меня это работает нормально.

3. @Xuan — Без какого-либо описания того, что в этом неверно (неправильный результат? сообщения об ошибках?), Я не могу помочь.

Ответ №2:

Это всего лишь определение функции — вы должны вызвать ее и распечатать результат, чтобы увидеть его. Полный код может быть:

 def first_factor(n):
    for num in range(2, n   1):
        if n % num == 0:
            return num

print(first_factor(3))
  

Обратите внимание, что я полностью опустил квадратный корень, поскольку он бесполезен и не позволяет получить результат для простых чисел.