Задача: Определить есть ли в массиве серии из подряд стоящих простых чисел

Задачи Олимпиады для языка C

Задача 7. Дан динамический массив целых чисел. Определить есть ли в массиве серии из подряд стоящих простых чисел. Если да посчитать количество таких серий и удалить последнюю серию.

Решение с использованием языка CPP:

/* C++ 
 * File:   arrsimpleseries.cpp
 * Author: darkfire
 *
 * Created on November 7, 2010, 7:19 PM
 */

#include <stdlib.h>
#include <iostream>

using std::cout;
using std::endl;

void EnterArrRand(int *, int);
void ViewArr(int *, int);
bool simplenumber(int);
int *deletesimple(int *,int &, int, int);

int main(int argc, char** argv) {
    //если не передано ни одного аргумента значит применяем размер маcсива по умолчанию
    int SIZE = 300, first=0, last=0;
    int count=0, counts=0;

    if (argc>1)SIZE=atoi(argv[1]);

    int *parr = new int [SIZE];

    EnterArrRand(parr,SIZE);//заполняем массив
    ViewArr(parr,SIZE);//выводим на экран массив
    cout<<"\n";
    for(int i=0;i<SIZE;i++){
        if (parr[i]==parr[i+1]){
            if (!simplenumber(parr[i])){//если не простое продолжить выполнять цикл далее
                continue;
            }
            count++;
        }else{
            if(count>0){
                //запоминаем координаты серии
                last=i;
                first=last-count;
                count=0;
                counts++;
            }
        }
    }
    cout<<"first: "<<first<<"\n";
    cout<<"last: "<<last<<"\n";
    cout<<"counts: "<<counts<<"\n";
    //функция для удаления последней последовательности
    if(counts>0){
    parr = deletesimple(parr,SIZE,first,last);
    ViewArr(parr,SIZE);//выводим на экран новый массив
    }

    delete [] parr;
    
    cout<<"\n";
    return (EXIT_SUCCESS);
}
int *deletesimple(int *parrold,int &SIZE, int first, int last){
    int SIZENew = SIZE - (last -first)-1;
    int *parrnew = new int [SIZENew];
    for(int i=0,j=0;i<SIZE;i++){
        if((i>=first)&&(i<=last))continue;
        else{
            parrnew[j]=parrold[i];
            j++;
        }
    }
    delete [] parrold;//удалем старый массив
    SIZE=SIZENew;//если нужно использовать в других функциях
    return parrnew;
}
bool simplenumber(int number){
    //true если число простое
    for(int i=2;i<number-1;i++){
        if(number%i==0)return false;
    }
    return true;
}

void ViewArr(int *parr1, int SIZEA){
    for(int i=0;i<SIZEA;i++)cout<<parr1[i]<<" ";
}

void EnterArrRand(int *parr1, int sizearr){
    for(int i=0;i<sizearr;i++)
        parr1[i]=rand()%12+1;//for SIZE=30
}

PQ VPS сервера в 38+ странах.

PQ VPS сервера в 38+ странах.

📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!