diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ccaf4c46..245615de4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.26.4) project(Algorithms_in_C++ LANGUAGES CXX VERSION 1.0.0 diff --git a/math/check_factorial.cpp b/math/check_factorial.cpp index 5573f4f83..0be45b895 100644 --- a/math/check_factorial.cpp +++ b/math/check_factorial.cpp @@ -1,7 +1,7 @@ /** * @file - * @brief A simple program to check if the given number is a [factorial](https://en.wikipedia.org/wiki/Factorial) of some - * number or not. + * @brief A simple program to check if the given number is a + * [factorial](https://en.wikipedia.org/wiki/Factorial) of some number or not. * * @details A factorial number is the sum of k! where any value of k is a * positive integer. https://www.mathsisfun.com/numbers/factorial.html diff --git a/math/check_prime.cpp b/math/check_prime.cpp index a05bd8517..ebd48cab5 100644 --- a/math/check_prime.cpp +++ b/math/check_prime.cpp @@ -1,13 +1,14 @@ /** * @file * @brief - * A simple program to check if the given number is [Prime](https://en.wikipedia.org/wiki/Primality_test) or not. + * A simple program to check if the given number is + * [Prime](https://en.wikipedia.org/wiki/Primality_test) or not. * @details - * A prime number is any number that can be divided only by itself and 1. It must - * be positive and a whole number, therefore any prime number is part of the - * set of natural numbers. The majority of prime numbers are even numbers, with - * the exception of 2. This algorithm finds prime numbers using this information. - * additional ways to solve the prime check problem: + * A prime number is any number that can be divided only by itself and 1. It + * must be positive and a whole number, therefore any prime number is part of + * the set of natural numbers. The majority of prime numbers are even numbers, + * with the exception of 2. This algorithm finds prime numbers using this + * information. additional ways to solve the prime check problem: * https://cp-algorithms.com/algebra/primality_tests.html#practice-problems * @author [Omkar Langhe](https://github.com/omkarlanghe) * @author [ewd00010](https://github.com/ewd00010) @@ -21,37 +22,37 @@ * @namespace */ namespace math { - /** - * @brief Function to check if the given number is prime or not. - * @param num number to be checked. - * @return true if number is a prime - * @return false if number is not a prime. +/** + * @brief Function to check if the given number is prime or not. + * @param num number to be checked. + * @return true if number is a prime + * @return false if number is not a prime. + */ +bool is_prime(int64_t num) { + /*! + * Reduce all possibilities of a number which cannot be prime with the first + * 3 if, else if conditionals. Example: Since no even number, except 2 can + * be a prime number and the next prime we find after our checks is 5, + * we will start the for loop with i = 5. then for each loop we increment + * i by +6 and check if i or i+2 is a factor of the number; if it's a factor + * then we will return false. otherwise, true will be returned after the + * loop terminates at the terminating condition which is i*i <= num */ - bool is_prime(int64_t num) { - /*! - * Reduce all possibilities of a number which cannot be prime with the first - * 3 if, else if conditionals. Example: Since no even number, except 2 can - * be a prime number and the next prime we find after our checks is 5, - * we will start the for loop with i = 5. then for each loop we increment - * i by +6 and check if i or i+2 is a factor of the number; if it's a factor - * then we will return false. otherwise, true will be returned after the - * loop terminates at the terminating condition which is i*i <= num - */ - if (num <= 1) { - return false; - } else if (num == 2 || num == 3) { - return true; - } else if (num % 2 == 0 || num % 3 == 0) { - return false; - } else { - for (int64_t i = 5; i * i <= num; i = i + 6) { - if (num % i == 0 || num % (i + 2) == 0) { - return false; - } + if (num <= 1) { + return false; + } else if (num == 2 || num == 3) { + return true; + } else if (num % 2 == 0 || num % 3 == 0) { + return false; + } else { + for (int64_t i = 5; i * i <= num; i = i + 6) { + if (num % i == 0 || num % (i + 2) == 0) { + return false; } } - return true; } + return true; +} } // namespace math /** diff --git a/strings/boyer_moore.cpp b/strings/boyer_moore.cpp index a8c4cbf8d..de79008e3 100644 --- a/strings/boyer_moore.cpp +++ b/strings/boyer_moore.cpp @@ -1,9 +1,11 @@ /** * @file * @brief - * The [Boyer–Moore](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm) algorithm searches for occurrences of pattern P in text T by - * performing explicit character comparisons at different alignments. Instead of - * a brute-force search of all alignments (of which there are n - m + 1), + * The + * [Boyer–Moore](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm) + * algorithm searches for occurrences of pattern P in text T by performing + * explicit character comparisons at different alignments. Instead of a + * brute-force search of all alignments (of which there are n - m + 1), * Boyer–Moore uses information gained by preprocessing P to skip as many * alignments as possible. *