Выдать все простые числа в диапазоне от 2 до N, заполнив массив числами от 2 до N - C (СИ)
Формулировка задачи:
Вводится число N (N<=100). Выдать все простые числа в диапазоне от 2 до N, заполнив массив числами от 2 до N, а затем обнулить все кратные 2, затем все кратные 3 и т.д. Необнуленные элементы и будут простыми числами
Решение задачи: «Выдать все простые числа в диапазоне от 2 до N, заполнив массив числами от 2 до N»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main () {
const int nmax=100;
int a[nmax],i,n,k;
printf ("\nВведите размерность массива от 2 до %d:",nmax);
scanf ("%d",&n);
a[0]=0; //1 - не простое число!
for (i=1; i<n; i++) a[i]=i+1;
for (k=2; k<=n/2; k++) for (i=0; i<n; i++) if (a[i]!=k && a[i]%k==0) a[i]=0;
printf ("\nПростые числа: ");
for (i=0; i<n; i++) if (a[i]!=0) printf ("%d ",a[i]);
system ("pause");
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные:
nmax- максимальная размерность массива (100);n- размерность массива, введенная пользователем;a- массив для хранения чисел;i- счётчик для циклов;k- счётчик для циклов.
- Пользователю предлагается ввести размерность массива от 2 до 100.
- В массиве
aинициализируются все элементы значением 1. - В цикле заполняются первые
nэлементов массива значениями от 1 доn. - В цикле проверяются все числа от 2 до
n/2на делимость на текущий индекс элемента массива. Если число делится без остатка, то текущий элемент массива, равный этому числу, перемножается на 0. - В цикле выводятся все ненулевые элементы массива через пробел.
- В конце программы выводится приглашение для нажатия любой клавиши и программа завершается.