
Из массива X(N) удалить три наибольших простых числа.(СИ)


Ответы на вопрос

Ответ:
#include<conio.h>
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
#define N 25
#define K 3
int prime(int num)
{ int i;
for(i=2;i<=num/2;i++)
if(num%i==0) break;
if(i==num/2+1 || num==1) return num;
else return 0;
}
int maxPos(int A[])
{ int i,max,mPos;
max=0;
for(i=0;i<N;i++)
if(A[i]>max)
{ max=A[i];
mPos=i;
}
return mPos;
}
int main()
{ int i,j,X[N],Y[N],pos;
srand(time(NULL));
for(i=0;i<N;i++)
{ X[i]=rand()%30+1;
Y[i]=prime(X[i]);
}
printf("Original array\n");
for(i=0;i<N;i++)
printf("%3d",X[i]);
printf("\nArray-masque of prime numbers\n");
for(i=0;i<N;i++)
printf("%3d",Y[i]);
printf("\n\n");
for(j=0;j<K;j++)
{ pos=maxPos(Y);
printf("%3d in position %3d targeted\n",X[pos],pos);
Y[pos]=-1;
X[pos]=-1;
}
j=0;
for(i=0;i<N;i++)
if(X[i]!=-1)
{ Y[j]=X[i];
j++;
}
printf("\nResult:\n");
for(i=0;i<j;i++)
printf("%3d",Y[i]);
getchar();
return 0;
}
Объяснение:



Для удаления трех наибольших простых чисел из массива X(N) вам потребуется следующий алгоритм на языке программирования C++:
- Создайте функцию для проверки, является ли число простым. Простое число - это число, которое делится только на 1 и само на себя.
cppbool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
return false;
}
}
return true;
}
Заполните массив X(N) вашими данными.
Создайте функцию для удаления трех наибольших простых чисел из массива.
cppvoid removeLargestPrimes(int X[], int& N) {
int largestPrimes[3] = {0}; // Массив для хранения трех наибольших простых чисел
int count = 0; // Счетчик найденных простых чисел
for (int i = 0; i < N; ++i) {
if (isPrime(X[i])) {
// Если X[i] является простым числом
if (count < 3) {
// Если еще не найдено 3 простых числа, то добавляем X[i] в массив largestPrimes
largestPrimes[count] = X[i];
} else {
// Иначе, находим минимальное простое число в largestPrimes и заменяем его, если X[i] больше
int minIndex = 0;
for (int j = 1; j < 3; ++j) {
if (largestPrimes[j] < largestPrimes[minIndex]) {
minIndex = j;
}
}
if (X[i] > largestPrimes[minIndex]) {
largestPrimes[minIndex] = X[i];
}
}
count++;
}
}
// Удаляем найденные простые числа из массива X
for (int i = 0; i < N; ++i) {
for (int j = 0; j < 3; ++j) {
if (X[i] == largestPrimes[j]) {
// Если X[i] совпадает с одним из наибольших простых чисел, удаляем его из массива
for (int k = i; k < N - 1; ++k) {
X[k] = X[k + 1];
}
N--; // Уменьшаем размер массива
i--; // Возвращаемся на предыдущий индекс, чтобы не пропустить другие числа
}
}
}
}
- Вызовите эту функцию и передайте ей массив X и размер N:
cppint main() {
int N = 10; // Размер массива X
int X[N] = {23, 7, 42, 17, 5, 12, 31, 8, 19, 2};
removeLargestPrimes(X, N);
// Выводим измененный массив X
for (int i = 0; i < N; ++i) {
cout << X[i] << " ";
}
return 0;
}
Этот код найдет и удалит три наибольших простых числа из массива X и выведет измененный массив без них.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili