Untitled
unknown
c_cpp
2 years ago
3.3 kB
9
Indexable
#include <iostream> #include <vector> #include <iomanip> #include <string> #include <cmath> #include <algorithm> #include <limits> using namespace std; // declaration of functions void sieve(int x); void print(vector<string> str); int user_input(); string lines = "\n----------------------------------------------------------------------------------------------------\n"; int main(){ cout << lines << setw(73) <<"Welcome to the Sieve of Eratosthenes Program!" << lines << endl; // call the sieve function and ask for user input sieve(user_input()); cout << lines << "Submitted by: Paras, Raymundo, Rosal, and Roxas. :>\n"; return 0; } void sieve(int x){ // declare vectors to store respected data vector<int> table; vector<string> marked_table; vector<int> prime; vector<int> composite; // store x values inside the vectors for(int i = 1; i <= x; i++){ table.push_back(i); //marked_table.push_back(to_string(i)); } for(int m = 1; m <= x; m++){ marked_table.push_back("[" + to_string(m) + "]"); } // marking index(0) since 1 is always composite replace(marked_table.begin(), marked_table.end(), marked_table.at(0), to_string(1)); for(int j = 2; j <= sqrt(x) ; j++){ //loop until j is equals to sqrt(x) times if(table.at(j-1)){//if reading element for(int k = j; (k * j) <= x; k++){ //iterate until k*j < x if( (k * j) % (table.at(j-1)) == 0){ //if remainder none for(int l = 2 ; l <= x; l++){ // loop till it reaches x if(table.at(l-1) == k*j) {// if table element == k*j // then MARK that table element. replace(marked_table.begin(), marked_table.end(), marked_table.at(l - 1), to_string(k * j)); } else continue; } } } } } // call the print function to print table to terminal print(marked_table); std::sort(composite.begin(), composite.end()); composite.erase(unique(composite.begin(),composite.end()), composite.end()); for(auto printcomp : composite){ cout << printcomp << " "; } cout << endl << endl; } void print(vector<string> str){ int counter = 0; //declared a counter for table formatting for(auto print : str){ // for each loop to print all elements of the vector cout << setfill(' ') << setw(10) << print; // used IOMANIP library functions to format the table uniformly counter++; // iterate counter by 1 if(counter == 10){ // if counter is equal to 10 // then linebreak cout << endl; counter = 0; // reset counter to 0 } } } // function that takes user input int user_input(){ //variable to put user's input int x; cout << "Enter a number: "; cin >> x; // store user input cout << endl; if (cin.fail()) { cin.clear(); // Clear the error flag cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Discard the input cout << "That's not a number. Please input a valid positive number!" << endl; } else { return x; } }
Editor is loading...