Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- vector <int> a;
- vector <int> b;
- vector <int> erastotenes(int ssize)
- {
- vector <int> s; //vector to return
- for(int i = 0; i <= 1; i++) s.push_back(0);
- for(int i = 2; i <= ssize; i++) s.push_back(1);
- for(int i = 2; i <= (ssize/2); i++)
- {
- if(s[i] == 1)
- {
- int iter = 2*i;
- while(iter <= ssize)
- {
- if(s[iter] == 1) s[iter] = 0;
- iter += i;
- }
- }
- }
- return s;
- }
- vector <int> findc(vector <int> x, vector <int> y)
- {
- //--- preparing tables: -//
- int maxInB = 0; //maximum value int vector y
- for(int i = 0; i < y.size(); i++)
- {
- if(y[i] > maxInB) maxInB = y[i];
- }
- int* L = new int[maxInB+1]; //table with occurrences number of values in vector y
- for(int i = 0; i <= maxInB; i++) L[i] = 0;
- int maxp = 0; //maximum value in table L
- for(int i = 0; i < y.size(); i++)
- {
- L[y[i]]++;
- if(L[y[i]] > maxp) maxp = L[y[i]];
- }
- vector <int> e = erastotenes(maxp); //Eratostenes Algorithm
- //--- main program: --//
- vector <int> c; //vector to return;
- for(int i = 0; i < x.size(); i++)
- {
- if(x[i] > maxInB or e[L[x[i]]] == 0) c.push_back(x[i]);
- }
- return c;
- }
- int main()
- {
- vector <int> result;
- a = {2, 3, 9, 2, 5, 1, 3, 7, 10};
- b = {2, 1, 3 ,4, 3, 10, 6, 6, 1, 7, 10, 10, 10};
- result = findc(a, b);
- for(int i = 0; i < result.size(); i++) cout << result[i] << " ";
- cout << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement