@megamage
Люблю грозу в начале мая!

Почему не выполняется код для вывода простых чисел на python?

Почему не работает. Должен выдавать от 1 до n
# вводим N
n = input("n = ")
# создаем пустой список для хранения простых чисел
lst = []
# в k будем хранить количество делителей
k = 0
# пробегаем все числа от 1 до N
for i in (1, n+1):
    # пробегаем все числа от 1 до текущего
    for j in (1, i):
        # ищем количество делителей
        if i % j == 0:
            k = k + 1
    # если делителей нет, добавляем число в список
    if k == 0:
        lst.append(i)
    else:
        k = 0
# выводим на экран список
print (lst)
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Проверять делители надо не с 1, а с 2 - ведь на 1 делится всё. И сами кандидаты в простые числа тоже должны начинаться с 2 - единица простым числом не является.

То есть, должно быть так:
for i in range(2, n + 1):
И так:
for j in range(2, i):
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@fireSparrow
Кроме той ошибки, на которую вам указал Аристарх Деряпа, есть ещё одна:
# пробегаем все числа от 1 до N
for i in (1, n+1):

Это неверно. Так у вас программа "пробежит" только по двум элементам - единице и n+1.
Чтобы задать последовательность, нужно использовать range:
# пробегаем все числа от 1 до N
for i in range(1, n+1):


И дальше по коду у вас эта ошибка ещё раз встречается.
Ответ написан
SelfiAS
@SelfiAS
▬ PYTHON ▬ JUNIOR ▬
n - строка, а не число.
# вводим N
n = int(input("n = "))
# создаем пустой список для хранения простых чисел
lst = []
# в k будем хранить количество делителей
k = 0
# пробегаем все числа от 1 до N
for i in (1, n+1):
    # пробегаем все числа от 1 до текущего
    for j in (1, i):
        # ищем количество делителей
        if i % j == 0:
            k = k + 1
    # если делителей нет, добавляем число в список
    if k == 0:
        lst.append(i)
    else:
        k = 0
# выводим на экран список
# print (lst) - НЕВЕРНО!!!!!!
print(lst)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы