Заполнить массив первыми n простых чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Заполнить масив первыми n простых чисел Вроде сделал, но надо еще что б делитель увеличивался только до половины проверяемого числа. Не знаю куда приписать (i<num/2)
#include <stdio.h>
#include <math.h>
#define N 50
 
int main() {
int i, num = 5, k = 2, mass[N];
mass[0] = {2};
mass[1] = {3};
 
for (i = 3; k < N; i+=2) {
    if (i >= num ) {
        mass[k] = num;
        i = 3;
        k++;
        num+=2;
    }
    if (num%i == 0){
        i = 5;
        num += 2;
    }
}
for (i = 0; i < N; i++)
    printf("%d \t", mass[i]);
return 0;
}

Решение задачи: «Заполнить массив первыми n простых чисел»

textual
Листинг программы
for(k=2; k<N; ) {
  flag = 1;
  for(j=1; j<k; j++) {
     if (mass[j]*mass[j] > num) break; 
     if (num%mass[j]) { flag=0; break; }
  }
  if (flag) 
    mass[k++] = num;
  num += 2;
}

Объяснение кода листинга программы

В данном коде задача состоит в заполнении массива первыми n простыми числами.

  1. Переменная k инициализируется значением 2, так как первое простое число равно 2.
  2. Переменная flag инициализируется значением 1, так как пока предполагается, что текущее число num является простым.
  3. Переменная j инициализируется значением 1, так как пока предполагается, что текущее число num является простым.
  4. Переменная mass инициализируется массивом длиной N (количество чисел, которые мы хотим проверить на простоту).
  5. Переменная num инициализируется значением 3, так как это следующее число после 2.
  6. Цикл for начинается, который будет выполняться до тех пор, пока k меньше N.
  7. Внутри цикла for начинается другой цикл for, который проверяет, является ли число num простым.
  8. Если num делится на любое число из массива mass без остатка, то число num не является простым, поэтому переменной flag присваивается значение 0 и цикл for прерывается.
  9. Если после проверки всех чисел из массива mass переменная flag все еще равна 1, то число num является простым и добавляется в массив mass под индексом k.
  10. Переменная k увеличивается на 1.
  11. Переменная num увеличивается на 2, так как это следующее число после 3.
  12. Цикл for повторяется до тех пор, пока k меньше N. Таким образом, данный код заполняет массив mass первыми n простыми числами.

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

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