Условие работает неправильно - C (СИ)
Формулировка задачи:
Добрый день, кто-нибудь может мне сказать почему в си условие работает не правильно в это случае (мне нужно вывести простые числа, там условие на цифру 9 не работает)
Заранее благодарен
for (i=3;i<=500;i++) { for (j=2;j<=i;j++) { if ((!(i%j==0)&&(i%2==0))) k++; } if (k==0) printf("%i ",i); else k=0; }
Решение задачи: «Условие работает неправильно»
textual
Листинг программы
#include <stdio.h> int main() { int i,j,k=0; for (i=3;i<=500;i++) { for (j=2;j<i;j++) { if (i%j==0) k=1; } if (k==0) printf("%i ",i); else k=0; } }
Объяснение кода листинга программы
В этом коде используется два вложенных цикла. Первый цикл проходит по числам от 3 до 500, а второй цикл проверяет, делится ли текущее число (i) на любое из чисел от 2 до (i-1). Если делится, то переменная k принимает значение 1. После проверки всех чисел от 2 до (i-1), выводится само число i, если k по-прежнему равно 0. Если же k равно 1, то k сбрасывается обратно в 0. Вот список, описывающий код:
- #include
- подключает файл стандартного ввода/вывода, позволяя использовать функции для вывода данных - int main() - функция main(), в которой находится точка входа в программу
- int i,j,k=0; - объявление трех переменных: i, j и k. Значение k устанавливается в 0
- for (i=3;i<=500;i++) - первый цикл. Проходит по числам от 3 до 500 включительно
- for (j=2;j<i;j++) - вложенный цикл. Проходит по числам от 2 до (i-1)
- if (i%j==0) k=1; - проверка, делится ли i на j без остатка. Если да, то k принимает значение 1
- if (k==0) printf(
%i
,i); else k=0; - если k по-прежнему равно 0, то число i выводится на экран. Если нет, то k сбрасывается обратно в 0 - } - закрытие вложенного цикла
- } - закрытие внешнего цикла
- } - закрытие функции main()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д