Из массива удалить простые числа, расположенные между максимальным и минимальным числом - C (СИ)
Формулировка задачи:
(СИ)Из массива X(N) удалить простые числа, расположенные между максимальным и минимальным числом.
Решение задачи: «Из массива удалить простые числа, расположенные между максимальным и минимальным числом»
textual
Листинг программы
int i,j,min,max,imin,imax;
min=max=A[0];
imin=imax=0;
for(i=0;i<N;i++)
{
if (A[i]<min)
{
min=A[i];
imin=i;
}
if (A[i]>max)
{
max=A[i];
imax=i;
}
}
if (imin>imax)
{
int temp=imin;
imin=imax;
imax=temp;
}
for (i=imin;i<=imax;i++)
{
simple=1;
for(int k=2; k<A[i]/2; k++)
{
if (A[i]%k==0)
{
simple=0;
break;
}
}
if (simple) A[i]=1;
}
i=j=0;
int c=0;
while (i<N)
{
while (A[i]==1)
{
j++;
c++;
}
A[i]=A[j];
i++;
j++;
}
Объяснение кода листинга программы
- min и max инициализируются значением первого элемента массива A[0].
- imin и imax инициализируются значением индекса первого элемента массива 0.
- В цикле происходит поиск минимального и максимального значений в массиве.
- Если индекс минимального значения больше индекса максимального значения, то происходит обмен значений между ними.
- В цикле проверяется каждый элемент массива от минимального до максимального значения на простоту.
- Если элемент является простым числом, то он заменяется на 1.
- После удаления простых чисел, индексы элементов сдвигаются вперед на 1.
- В цикле происходит удаление повторяющихся элементов, начиная с 1.
- После удаления повторяющихся элементов, индексы элементов сдвигаются вперед на 1.