#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