Существует общая проблема HW для перечисления всех простых чисел с помощью python, и с помощью SO и других сайтов нашли решение этой проблемы, используя циклы for, аналогичные приведенным ниже:
def count_primes(num):
primes = []
for y in range (2, num):
for z in range(2, y):
if y % z == 0:
break
else:
primes.append(y)
return primes
Когда я печатаю первый экземпляр z, yi будет ниже:
(2,3)
мой вопрос: почему первый экземпляр y = 3?
, учитывая, что диапазон равен (2, num) , не будут ли случаи y проходить от 2 до num - 1?
, очевидно, если бы вышеприведенное было верным, 2 не было бы в списке, но я не могу обернуться, почему оно начинается с 3 до заставить эту функцию работать.
Кроме того, когда я проверял значения с помощью print, y действительно начинает 2, но начинается с 3 после секунды для l oop:
def count_primes(num):
primes = []
for y in range (2, num):
print(f'y = {y}')
for z in range(2, y):
print(f'y = {y}, z = {z}')
#if y % z == 0:
#break
#else:
#primes.append(y)
#return primes
count_primes(5)
это возвращает:
y = 2
y = 3
y = 3, z = 2
y = 4
y = 4, z = 2
y = 4, z = 3
Я ценю любую ясность, которую вы можете предоставить для этого значения y
* Я полагаю, что это потому, что диапазон (2,2), по существу, недопустим, поэтому он цикличен снова к y = 3, но если кто-то может подтвердить (или еще лучше) объяснить, почему это случилось, что должно быть здорово