Выяснить, есть ли среди элементов массива простые числа (нужны комментарии) - 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);- это печать символа новой строки, который обычно используется для перехода на новую строку в консоли.