Как удалить простые числа из динамического массива
Привет! Меня зовут Алексей, и я сегодня расскажу тебе, как я написал функцию, которая удаляет простые числа из динамического массива. Это может быть полезно, когда у тебя есть массив чисел, и ты хочешь избавиться от простых чисел, чтобы сделать дальнейшую обработку данных более эффективной.
Для начала, давай разберемся, что такое простое число. Простое число ー это натуральное число, большее 1٫ которое не делится ни на одно другое натуральное число٫ кроме 1 и самого себя. К примеру٫ числа 2٫ 3٫ 5٫ 7٫ 11 и 13 являются простыми.
Теперь, когда мы знаем, что такое простые числа, можно приступить к написанию функции.
Шаг 1⁚ Создание функции
Для начала создадим функцию, которая будет принимать указатель на динамический массив и его размер⁚
int* removePrimes(int* array, int size) {
// тут будет код
}
Функция возвращает указатель на новый динамический массив без простых чисел.
Шаг 2⁚ Проверка чисел на простоту
Теперь давайте рассмотрим, как можно проверить число на простоту. Для этого нужно пройтись по всем числам от 2 до квадратного корня из текущего числа и проверить, делится ли оно на какое-либо из этих чисел без остатка.
bool isPrime(int num) {
if (num nlt; 1) {
return false;
}
for (int i 2; i * i nlt; num; i ) {
if (num % i 0) {
return false;
}
}
return true;
}
Мы сначала проверяем, является ли число меньше или равным 1. Если это так, то оно уже не является простым. Затем мы проходим по всем числам от 2 до квадратного корня из текущего числа и проверяем, делится ли оно на какое-либо из этих чисел без остатка. Если делится, то число не является простым и функция возвращает false. Если ни одно из чисел не делит текущее число без остатка, то оно является простым и функция возвращает true.
Шаг 3⁚ Удаление простых чисел из массива
Теперь мы можем перейти к написанию кода для удаления простых чисел из массива. Мы создадим новый динамический массив, в который будем копировать только те числа из исходного массива, которые не являются простыми.
int* removePrimes(int* array, int size) {
int* newArray new int[size];
int count 0;
for (int i 0; i nlt; size; i ) {
if (!isPrime(array[i])) {
newArray[count ] array[i];
}
}
return newArray;
}
Мы создаем новый динамический массив newArray такого же размера, как исходный массив. Затем мы проходим по всем элементам исходного массива и проверяем, является ли текущий элемент простым числом. Если нет, то мы копируем его в новый массив и увеличиваем count на 1.
В конце функции мы возвращаем указатель на новый массив newArray. Внутри функции не забудь освободить память, которую мы выделили для newArray, после использования.
Шаг 4⁚ Проверка функции
После того, как мы написали функцию, давайте проверим ее на простом примере⁚
int main {
int array[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
int size sizeof(array) / sizeof(array[0]);
int* newArray removePrimes(array, size);
for (int i 0; i nlt; size ⸺ 2; i ) {
std⁚⁚cout nlt;nlt; newArray[i] nlt;nlt; ″ ″;
}
delete[] newArray;
return 0;
}
В этом примере у нас есть массив чисел array. Мы создаем новый массив newArray, копируем в него только непростые числа из array и выводим результат на экран. В конце освобождаем память, выделенную для newArray.
В результате выполнения программы на экране должны быть выведены числа 4, 6, 8 и 10, поскольку они являются непростыми числами.
Вот и все! Мы написали функцию, которая удаляет простые числа из динамического массива. Я надеюсь, что эта статья была полезной для тебя!