Найдите ошибку и исправьте ее:
import math
N=int(input())
i=j=x=0
for i in range (1,N+1):
x=int(input())
z=0
for j in range (2,round(math.sqrt(x))):
if x%j==0
z=1
if z==0
print(x)
Ответы на вопрос
В данном коде допущено несколько ошибок: пропущены двоеточия, нарушены отступы и неправильно заданы границы цикла проверки делителей.
Программа должна считывать N чисел и выводить среди них только простые числа.
Исправленный код
Какие ошибки были допущены?
1. Пропущено двоеточие после условия if.
В исходном коде:
Правильно:
В Python после условия if обязательно ставится двоеточие.
2. Пропущено двоеточие во втором условии.
Было:
Правильно:
3. Неправильные отступы.
В исходном коде:
Проверка if z == 0 должна находиться внутри внешнего цикла for, но за пределами внутреннего цикла. Команда print(x) должна быть вложена в условие.
Иначе программа не сможет правильно проверить и вывести каждое введённое число.
4. Ошибка в границе внутреннего цикла.
Было:
Правильно:
Функция range() не включает правую границу. Поэтому необходимо прибавить 1, чтобы проверить делители вплоть до квадратного корня включительно.
Функция math.isqrt(x) вычисляет целую часть квадратного корня без ошибок округления.
Например, число 9 не является простым, поскольку делится на 3. Поэтому делитель 3 обязательно должен участвовать в проверке.
5. Не предусмотрена проверка чисел меньше 2.
Числа 0, 1 и отрицательные числа не являются простыми.
Поэтому добавляем:
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

