Решето Эратосфена (работает некорректно) - 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 и на само себя. Список действий, которые происходят в коде:

  1. Создается массив mass размером MAX.
  2. В цикле заполняется значениями от 0 до MAX-1.
  3. Устанавливается значение mass[1] равным 0.
  4. Начинается второй цикл, который ищет простые числа. В этом цикле устанавливаются значения в массиве mass равные 0 для всех кратных текущего числа (с которого начинается поиск).
  5. Начинается третий цикл, который выводит на экран значения массива mass, которые не равны 0. Это и есть простые числа. Алгоритм Решето Эратосфена работает некорректно в данном коде из-за неправильно выбранного начального значения для переменной i в третьем цикле. Вместо i=2 должно быть i=3.

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы