Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[fix/docs]: fit check_amicable_pair.cpp to guidelines #2465

Merged
merged 10 commits into from
Jun 23, 2023
54 changes: 27 additions & 27 deletions math/armstrong_number.cpp
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
/**
* @file
* @brief Program to check if a number is an [Armstrong/Narcissistic
* number](https://en.wikipedia.org/wiki/Narcissistic_number) in decimal system.
*
* @details
* Armstrong number or [Narcissistic
* number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that
* is the sum of its own digits raised to the power of the number of digits.
*
* let n be the narcissistic number,
* \f[F_b(n) = \sum_{i=0}^{k-1}d_{i}^{k}\f] for
* \f$ b > 1 F_b : \N \to \N \f$ where
* \f$ k = \lfloor log_b n\rfloor is the number of digits in the number in base \f$b\f$, and
* \f$ d_i = \frac{n mod b^{i+1} - n mod b^{i}}{b^{i}} \f$
*
* @author [Neeraj Cherkara](https://github.com/iamnambiar)
*/
#include <cassert> /// for assert
#include <cmath> /// for std::pow
#include <iostream> /// for IO operations
* @file
* @brief Program to check if a number is an [Armstrong/Narcissistic
* number](https://en.wikipedia.org/wiki/Narcissistic_number) in decimal system.
*
* @details
* Armstrong number or [Narcissistic
* number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that
* is the sum of its own digits raised to the power of the number of digits.
*
* let n be the narcissistic number,
* \f[F_b(n) = \sum_{i=0}^{k-1}d_{i}^{k}\f] for
* \f$ b > 1 F_b : \N \to \N \f$ where
* \f$ k = \lfloor log_b n\rfloor is the number of digits in the number in base
* \f$b\f$, and \f$ d_i = \frac{n mod b^{i+1} - n mod b^{i}}{b^{i}} \f$
*
* @author [Neeraj Cherkara](https://github.com/iamnambiar)
*/
#include <cassert> /// for assert
#include <cmath> /// for std::pow
#include <iostream> /// for IO operations

/**
* @brief Function to calculate the total number of digits in the number.
Expand Down Expand Up @@ -61,9 +61,9 @@ bool is_armstrong(int number) {
}

/**
* @brief Self-test implementations
* @returns void
*/
* @brief Self-test implementations
* @returns void
*/
static void test() {
// is_armstrong(370) returns true.
assert(is_armstrong(370) == true);
Expand All @@ -82,10 +82,10 @@ static void test() {
}

/**
* @brief Main Function
* @returns 0 on exit
*/
* @brief Main Function
* @returns 0 on exit
*/
int main() {
test(); // run self-test implementations
test(); // run self-test implementations
return 0;
}
62 changes: 37 additions & 25 deletions math/check_amicable_pair.cpp
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
/**
*
* @file
* \brief A C++ Program to check whether a pair of number is [amicable
* @brief A C++ Program to check whether a pair of numbers is an [amicable
* pair](https://en.wikipedia.org/wiki/Amicable_numbers) or not.
*
* \details
* Amicable Pair are two positive integers such that sum of the proper divisor
* of each number is equal to the other number.
* @author iamnambiar
* @details
* An Amicable Pair is two positive integers such that the sum of the proper
* divisor for each number is equal to the other number.
*
* @note Remember that a proper divisor is any positive whole number that
* divides into a selected number, apart from the selected number itself, and
* returns a positive integer. for example 1, 2 and 5 are all proper divisors
* of 10.
*
* @author [iamnambiar](https://github.com/iamnambiar)
*/
#include <cassert>
#include <iostream>
#include <cassert> /// for assert
#include <iostream> /// for IO operations

/**
* Function to calculate the sum of all the proper divisor
* @brief Mathematical algorithms
* @namespace
*/
namespace math {
/**
* @brief Function to calculate the sum of all the proper divisor
* of an integer.
* @param num First number.
* @param num selected number.
* @return Sum of the proper divisor of the number.
*/
int sum_of_divisor(int num) {
// Variable to store the sum of all proper divisors.
int sum = 0;
int sum = 1;
// Below loop condition helps to reduce Time complexity by a factor of
// square root of the number.
for (int div = 2; div * div <= num; ++div) {
Expand All @@ -35,11 +45,11 @@ int sum_of_divisor(int num) {
}
}
}
return sum + 1;
return sum;
}

/**
* Function to check whether the pair is amicable or not.
* @brief Function to check whether the pair is amicable or not.
* @param x First number.
* @param y Second number.
* @return `true` if the pair is amicable
Expand All @@ -48,25 +58,27 @@ int sum_of_divisor(int num) {
bool are_amicable(int x, int y) {
return (sum_of_divisor(x) == y) && (sum_of_divisor(y) == x);
}
} // namespace math

/**
* Function for testing the is_amicable() with
* all the test cases.
* @brief Self-test implementations
* @returns void
*/
void test() {
// are_amicable(220, 284) returns true.
assert(are_amicable(220, 284) == true);
// are_amicable(6232, 6368) returns true.
assert(are_amicable(6368, 6232) == true);
// are_amicable(458, 232) returns false.
assert(are_amicable(458, 232) == false);
static void tests() {
assert(math::are_amicable(220, 284) == true);
assert(math::are_amicable(6368, 6232) == true);
assert(math::are_amicable(458, 232) == false);
assert(math::are_amicable(17296, 18416) == true);
assert(math::are_amicable(18416, 17296) == true);

std::cout << "All tests have successfully passed!" << std::endl;
}

/**
* Main Function
* @brief Main function
* @returns 0 on exit
*/
int main() {
test();
std::cout << "Assertion Success." << std::endl;
tests(); // perform self-tests implementations
return 0;
}
Loading