Найти в последовательности наибольшее простое число - 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, то оно становится новым максимальным числом. - В конце выводится наибольшее простое число.
Код не оптимален, так как использует
грубую силу, перебирая все числа до проверяемого. Для больших чисел это может занять много времени. Лучше использовать более сложные алгоритмы для определения простоты числа, например, решето Эратосфена.