Я пишу простую программу, которая дает список всех простых чисел. меньше заданного нет. N. У меня возникла проблема с тем, что мой счетчик check
в функции primes_gen
else не обновляется. Хотя, когда я использую ту же логику без функции, как упоминание во втором фрагменте кода, все работает правильно.Python, для счетчика циклов не обновляется?
логика применяется: -
когда
n
передается функции<= 2
, пустой список возвращаетсякогда
n
является> 2
,range(3,n,2)
идентифицирует все нечетные числа. Это первый шаг, отмеченный в первом фрагменте кода.второй для цикла, обозначенный шагом 2, проверяет, нет ли. делится на все № менее
i
. Если да, то чек счетчик увеличивается на+1
и этот цикл завершается «продолжить»если чек остается нулевым до конца для цикла, то
i
присоединяемого к списку и, наконец, после завершения списка петли возвращается.
Проблема: -
-The список я получил в результате был [2], который неправильно анс. поэтому я написал шаг 3, как отмечено в первом фрагменте, и я обнаружил, что мой счетчик не обновляется после «continue», как показано на выходе. когда такая же логика применяется без функции, написанной во втором фрагменте кода, все работает правильно. Я не могу понять, что здесь не так, почему check
не обновляется после continue
?
contents =['10']
def prime_gen(n):
num_list=[2]
if n <=2:
return []
else:
for i in range(3,n,2): #step 1
check=0
for u in (2,i): #step 2
if i%u == 0:
check += 1
continue
print (check,i) #step 3
if check == 0:
num_list.append(i)
return num_list
if __name__== '__main__':
for j in range(len(contents)):
print (int(contents[j]))
num_list = prime_gen(int(contents[j]))
print (str(num_list).replace('[','').replace(']',''))
Выход
10
1 3
1 5
1 7
1 9
2
Ожидаемое АНС (если шаг 3 выше комментарий)
10
2, 3, 5, 7
второго кода без функции
contents = ['10'] #to-check
for i in range(len(contents)):
target = int(contents[i])
num_list= [2]
for j in range(3,target,2):
check = 0
for u in range(2,j):
if j%u == 0:
check +=1
continue
if check == 0:
num_list.append(j)
#print (num_list)
print (str(num_list).replace('[','').replace(']',''))
выход
2, 3, 5, 7
так что это была довольно глупая ошибка: '(. Спасибо Brien – CbK
Нет проблем, мы все были там :) – Brien
@CbK, так как это решило вашу проблему, подумайте о принятии этого ответа, чтобы показать другим, что это было полезно для вы. – Brien