Hi, this is my code. Do you have any ideas why I’m getting a wrong answer?
Thanks in advance.
#include -<< here is iostream
using namespace std;
#include <math.h> -<< math.h
#include -<< vector
int amount = 0;
void DataProcessor();
void run();
int** dataRange(int amount);
vector primeNumbers(int**, int);
vector fillVector(int lower, int upper);
vector sieveNumbers(int upper);
void riddling(vectorcontrolVector, vector numbers);
void DataProcessor()
{
cin >> amount;
run();
};
void run()
{
int** arr = dataRange(amount);
int counter = 0;
while (counter < amount)
{
primeNumbers(arr, counter);
if (counter == amount-1)
break;
cout << endl;
counter++;
};
delete[] arr;
};
int** dataRange(int amount)
{
int** arr = new int* [amount];
for (int i = 0; i < amount; i++)
{
arr[i] = new int[2];
for (int j = 0; j < 2; j++)
{
cin >> arr[i][j];
}
if (arr[i][0] < 2)
arr[i][0] = 2;
}
return arr;
};
vector primeNumbers(int** arr, int counter)
{
int lower = arr[counter][0];
int upper = arr[counter][1];
vector primeNumbers = fillVector(lower, upper);
riddling(sieveNumbers(upper), primeNumbers);
return primeNumbers;
}
vector fillVector(int lower, int upper)
{
vector numbersBase;
for (int i = lower; i <= upper; i++)
{
numbersBase.push_back(i);
}
return numbersBase;
}
vector sieveNumbers(int upper)
{
vector sieve;
for (int i = 2; i <= sqrt(upper) + 1; i++)
{
sieve.push_back(i);
}
return sieve;
}
void riddling(vectorcontrolVector, vector numbers)
{
int test = 0;
for (int i = 0; i < controlVector.size(); i++)
{
int size = numbers.size();
for (int j = size; j > i; j–)
{
if (numbers[j - 1] % controlVector[i] == 0 && numbers[j - 1] != controlVector[i])
numbers.erase(numbers.begin() + j - 1);
}
}
int size = numbers.size();
for (int j = 0; j < size; j++)
{
cout << endl << numbers[j];
}
};
int main()
{
DataProcessor();
};