Выяснить, есть ли среди элементов массива простые числа (нужны комментарии) - C (СИ)
Формулировка задачи:
Задан целочисленный массив размерностью N. Есть ли среди элементов массива простые числа? Если да, то вывести номера этих элемент
#include <stdio.h> #include <time.h> #include <stdlib.h> int simple(int x) { int i; for(i=2;i<=x/2;i++) if((x%i)==0) return 0; return 1; } int main() { srand(time(NULL)); int i,size; printf("Enter array size: "); scanf("%d",&size); int arr[size]; //fill array! for(i=0;i<size;i++) { arr[i] = rand()%100+1; if(simple(arr[i])) printf("%d ",arr[i]); } printf("\n"); return 0; }
Решение задачи: «Выяснить, есть ли среди элементов массива простые числа (нужны комментарии)»
textual
Листинг программы
int simple(int x) { int i; for(i=2;i<=x/2;i++) if((x%i)==0) return 0; return 1; } int main() { srand(time(NULL));//будем использовать для заполнения массива рандомными числами int i,size; printf("Enter array size: "); scanf("%d",&size);//ввод размера массива int arr[size]; //fill array! for(i=0;i<size;i++) { arr[i] = rand()%100+1;//то самое, про строку srand(time(NULL)); if(simple(arr[i]))//вызов функции int simple(int x) которая говорит, (x%i)==0 или нет //если да - вернет 0, если нет вернет 1 printf("%d ",arr[i]);//печатает-не печатает значение элемента массива в зависимости от возвращаемого int simple(int x) } printf("\n"); return 0; }
Объяснение кода листинга программы
В этом коде:
int simple(int x)
- это функция, которая проверяет, является ли числоx
простым. Она итерирует от 2 доx/2
и проверяет, делится лиx
на какое-либо из этих чисел без остатка. Если делится, то возвращает 0 (число не простое), если не делится, то возвращает 1 (число простое).int main()
- это функция, которая запрашивает у пользователя размер массива, заполняет этот массив случайными числами с помощью функцииrand()
и функцииsimple()
.printf(
%d,arr[i]);
- это печать значения элемента массиваarr[i]
в консоль. Если функцияsimple()
вернула 0, то естьarr[i]
не является простым числом, то это значение не будет напечатано.printf(
\n);
- это печать символа новой строки, который обычно используется для перехода на новую строку в консоли.return 0;
- это оператор, который указывает на успешный конец работы функции. В контекстеint main()
, это означает, что программа успешно завершилась.srand(time(NULL));
- это функция, которая инициализирует генератор случайных чисел текущим временем. Это делается для того, чтобы каждый раз при запуске программы генерировались разные случайные числа.scanf(
%d,&size);
- это функция, которая запрашивает у пользователя ввод целого числа и сохраняет его в переменнойsize
.int arr[size];
- это объявление массиваarr
с размерностьюsize
.for(i=0;i<size;i++)
- это цикл, который проходит по всем элементам массиваarr
.arr[i] = rand()%100+1;
- это присваивание случайного числа элементу массиваarr[i]
. Функцияrand()
генерирует случайное число, а оператор%
возвращает остаток от деления этого числа на 100, чтобы получить число от 1 до 100.if(simple(arr[i]))
- это проверка, является ли числоarr[i]
простым, с помощью функцииsimple()
. Если число не является простым, то условие истинно, и программа не печатает значение этого числа.printf(
%d,arr[i]);
- это печать значения элемента массиваarr[i]
в консоль, если число является простым.printf(
\n);
- это печать символа новой строки, который обычно используется для перехода на новую строку в консоли.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д