Найти в последовательности наибольшее простое число - C (СИ)
Формулировка задачи:
Здравствуйте, помогите пожалуйста с написанием программы, буду очень благодарен. вот задача:
дан одномерный целочисленный массив. найти в последовательности наибольшее простое число
заранее спасибо
upp
Решение задачи: «Найти в последовательности наибольшее простое число»
textual
Листинг программы
- #include <iostream>
- #include <time.h>
- #define SIZE 10
- bool PrimeNumber(int n) {
- for(int i=2; i<=10; i++) {
- bool check = false;
- if(i == n) continue;
- if(n%i !=0) check = true;
- if(check == false || n == 1 || n == 0) {
- return false;
- }
- }
- return true;
- }
- int main()
- {
- setlocale(0,"rus");
- srand(time(NULL));
- int Max = 0;
- int mas[SIZE];
- for(int i=0; i<SIZE; i++) mas[i] = rand()%20;
- for(int j=0; j<SIZE; j++) {
- printf("%d ", mas[j]);
- if(PrimeNumber(mas[j]) == true && mas[j] > Max) Max = mas[j];
- }
- printf("\nНаибольшее простое число: %d\n", Max);
- return 0;
- }
Объяснение кода листинга программы
В этом коде:
- Задана функция
PrimeNumber
, которая проверяет, является ли число простым. - В функции
main
создается массивmas
размеромSIZE
(10), который заполняется случайными числами от 0 до 20. - Затем в цикле перебираются все числа в массиве.
- Для каждого числа в массиве вызывается функция
PrimeNumber
, чтобы проверить, является ли число простым. - Если число простое и больше текущего максимального числа
Max
, то оно становится новым максимальным числом. - В конце выводится наибольшее простое число.
Код не оптимален, так как использует
грубую силу
, перебирая все числа до проверяемого. Для больших чисел это может занять много времени. Лучше использовать более сложные алгоритмы для определения простоты числа, например, решето Эратосфена.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д