Заполнить массив первыми 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 простыми числами.
- Переменная
kинициализируется значением 2, так как первое простое число равно 2. - Переменная
flagинициализируется значением 1, так как пока предполагается, что текущее числоnumявляется простым. - Переменная
jинициализируется значением 1, так как пока предполагается, что текущее числоnumявляется простым. - Переменная
massинициализируется массивом длинойN(количество чисел, которые мы хотим проверить на простоту). - Переменная
numинициализируется значением 3, так как это следующее число после 2. - Цикл
forначинается, который будет выполняться до тех пор, покаkменьшеN. - Внутри цикла
forначинается другой циклfor, который проверяет, является ли числоnumпростым. - Если
numделится на любое число из массиваmassбез остатка, то числоnumне является простым, поэтому переменнойflagприсваивается значение 0 и циклforпрерывается. - Если после проверки всех чисел из массива
massпеременнаяflagвсе еще равна 1, то числоnumявляется простым и добавляется в массивmassпод индексомk. - Переменная
kувеличивается на 1. - Переменная
numувеличивается на 2, так как это следующее число после 3. - Цикл
forповторяется до тех пор, покаkменьшеN. Таким образом, данный код заполняет массивmassпервыми n простыми числами.