Решето Эратосфена (работает некорректно) - C (СИ)
Формулировка задачи:
вроде компилируется однако не работает корректно
#include<stdio.h> int main() { int n,j,c; int i = 2; int mass [10] = {2}; for (n = 0; n < 10; n++,i++) mass[n] = i; for(c=2; c<10; c++){ if (mass[c] !=0){ for(j = c*2; j<10; j+=c){ mass[j]=0; } } } for(i=0; i<10; i++){ if(mass[i]!=0){ printf("%d\n", mass[i]); } } }
Решение задачи: «Решето Эратосфена (работает некорректно)»
textual
Листинг программы
#include<stdio.h> #define MAX 100 int main() { int n, j, c; int i = 2; int mass [MAX]; for (n = 0; n < MAX; n++) mass[n] = n; mass[1] = 0; for(c=2; c<MAX; c++){ if (mass[c] !=0){ for(j = c*2; j<MAX; j+=c) mass[j]=0; } } for(; i<MAX; i++) { if(mass[i]!=0) printf("%d\n", mass[i]); } }
Объяснение кода листинга программы
В этом коде реализуется алгоритм Решето Эратосфена. Он предназначен для вычисления количества простых чисел в заданном диапазоне. Простые числа — это числа, которые делятся только на 1 и на само себя. Список действий, которые происходят в коде:
- Создается массив
mass
размеромMAX
. - В цикле заполняется значениями от 0 до
MAX-1
. - Устанавливается значение
mass[1]
равным 0. - Начинается второй цикл, который ищет простые числа. В этом цикле устанавливаются значения в массиве
mass
равные 0 для всех кратных текущего числа (с которого начинается поиск). - Начинается третий цикл, который выводит на экран значения массива
mass
, которые не равны 0. Это и есть простые числа. Алгоритм Решето Эратосфена работает некорректно в данном коде из-за неправильно выбранного начального значения для переменнойi
в третьем цикле. Вместоi=2
должно бытьi=3
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д