Вы используете z
вне for z in range (2, i):
блока. The z
, предполагая, что это делитель детерминированного, не простое число, может быть сохранено в переменной для вывода его за пределы for
блока:
num = int(input("enter the max: "))
for i in range (2, num):
is_prime = True
divisable_by = 0
for z in range (2, i):
if i % z ==0:
is_prime = False
divisable_by = z
if is_prime:
print(divisable_by)
Использование более описательные имена переменных, удаление дополнительная переменная:
max = int(input("enter the max: "))
# print all prime numbers up to (max)
for number in range (2, max):
divisable_by = 0
for divisor in range (2, int(math.sqrt(number))):
if number % divisor == 0:
is_prime = False
divisable_by = divisor
if divisable_by != 0:
print(divisable_by)
Примечание: ограниченный внутренний цикл, чтобы 2...squareroot(number to check)
повысить производительность за счет немного.
, пожалуйста, отформатируйте свой код – prasun