diff --git a/C++/Math/SieveofEratosthenes.cpp b/C++/Math/SieveofEratosthenes.cpp new file mode 100644 index 0000000..eda9a8f --- /dev/null +++ b/C++/Math/SieveofEratosthenes.cpp @@ -0,0 +1,30 @@ + +// For a given number it will tell all the prime number less than or equal to it. + +#include +using namespace std; + +void SieveOfEratosthenes(int n) +{ + bool sieve[n+1]; + memset(sieve, true, sizeof(sieve)); + + for (int p=2; p*p<=n; p++) + { + if (sieve[p] == true) + { + + for (int i=p*p; i<=n; i += p) + sieve[i] = false; + } + } + + for (int p=2; p<=n; p++) if (sieve[p]) cout << p << " "; + cout<<"\n"; +} +int main() +{ + int n; cin>>n; + SieveOfEratosthenes(n); + return 0; +} diff --git a/C++/Sort/mergesort.cpp b/C++/Sort/mergesort.cpp new file mode 100644 index 0000000..c036402 --- /dev/null +++ b/C++/Sort/mergesort.cpp @@ -0,0 +1,76 @@ +#include +using namespace std; + +void merge(int arr[], int p, int q, int r) { + + + int n1 = q - p + 1; + int n2 = r - q; + + int L[n1], M[n2]; + + for (int i = 0; i < n1; i++) + L[i] = arr[p + i]; + for (int j = 0; j < n2; j++) + M[j] = arr[q + 1 + j]; + + + int i, j, k; + i = 0; + j = 0; + k = p; + + + while (i < n1 && j < n2) { + if (L[i] <= M[j]) { + arr[k] = L[i]; + i++; + } else { + arr[k] = M[j]; + j++; + } + k++; + } + + + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } + + while (j < n2) { + arr[k] = M[j]; + j++; + k++; + } +} + + +void mergeSort(int arr[], int l, int r) { + if (l < r) { + + int m = l + (r - l) / 2; + + mergeSort(arr, l, m); + mergeSort(arr, m + 1, r); + merge(arr, l, m, r); + } +} + +void printArray(int arr[], int size) { + for (int i = 0; i < size; i++) + cout << arr[i] << " "; + cout << endl; +} + +int main() { + int arr[] = {4,8,2,9,7,3,6}; + int size = sizeof(arr) / sizeof(arr[0]); + + mergeSort(arr, 0, size - 1); + + cout << "Sorted array: \n"; + printArray(arr, size); + return 0; +}