добавить в список (определение, является ли ввод простым числом)

#python

#python

Вопрос:

Пытаюсь написать функцию ‘prime_check (number)’, чтобы проверить, является ли аргумент простым числом

number_of_factors для заданного числа должно быть только 1 (само заданное число) и ‘1’, которое уже исключено в операторе while

Возникли проблемы с добавлением переменной в список «set_of_factors», пытался выполнить отладку в Thonny, в котором говорится, что set_of_factors = none

 def prime_checker(number):

    set_of_factors=[]
    number_of_factors=len(set_of_factors)
    f=2

    while number > 1 and f<=number:
        if number%f == 0:
            set_of_factors.insert(0,1)
            f =1            
        else:
            f =1              
    if number_of_factors==1:
        print("It is a prime number")
    else:
        print("It is not a prime number")

n = int(input("Check this number: "))
prime_checker(number=n)
 

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

1. Перейти number_of_factors=len(set_of_factors) к после while цикла.

2. На самом деле лучше вообще не иметь этой переменной, а просто использовать len(set_of_factors) напрямую.

3. Благодаря обоим, это решило проблему. Могу ли я получить некоторую критику о том, как задавать лучшие вопросы?

Ответ №1:

Простые числа имеют два фактора, один и себя. Например, коэффициенты 5 будут (1, 5)

Также я добавляю, если «.insert» использовать «.append»

     def prime_checker(number):

    set_of_factors=[]
    number_of_factors=len(set_of_factors)
    f=2
    while number > 1 and f<=number:
        if number%f == 0:
            set_of_factors.insert(0)
            f =1            
        else:
            f =1              
    if number_of_factors==2:
        print("It is a prime number")
    else:
        print("It is not a prime number")
 

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

1. Цикл проверки коэффициента начинается с 2, поэтому он намеренно игнорирует коэффициент 1.

2. number_of_factors всегда имеет значение 0, сравнение с 2 так же ложно, как и сравнение с 1