Algorithms_in_C++  1.0.0
Set of algorithms implemented in C++.
magic_number.cpp File Reference

A simple program to check if the given number is a magic number or not. A number is said to be a magic number, if the sum of its digits are calculated till a single digit recursively by adding the sum of the digits after every addition. If the single digit comes out to be 1,then the number is a magic number. More...

#include <cassert>
#include <iostream>
Include dependency graph for magic_number.cpp:

Namespaces

 math
 for std::vector
 

Functions

bool math::magic_number (const uint64_t &n)
 
static void tests ()
 Test function. More...
 
int main ()
 Main function. More...
 

Detailed Description

A simple program to check if the given number is a magic number or not. A number is said to be a magic number, if the sum of its digits are calculated till a single digit recursively by adding the sum of the digits after every addition. If the single digit comes out to be 1,then the number is a magic number.

This is a shortcut method to verify Magic Number. On dividing the input by 9, if the remainder is 1 then the number is a magic number else not. The divisibility rule of 9 says that a number is divisible by 9 if the sum of its digits are also divisible by 9. Therefore, if a number is divisible by 9, then, recursively, all the digit sums are also divisible by 9. The final digit sum is always 9. An increase of 1 in the original number will increase the ultimate value by 1, making it 10 and the ultimate sum will be 1, thus verifying that it is a magic number.

Author
Neha Hasija

Function Documentation

◆ main()

int main ( void  )

Main function.

Returns
0 on exit
77  {
78  tests(); // execute the tests
79  return 0;
80 }
Here is the call graph for this function:

◆ tests()

static void tests ( )
static

Test function.

Returns
void
51  {
52  std::cout << "Test 1:\t n=60\n";
53  assert(math::magic_number(60) == false);
54  std::cout << "passed\n";
55 
56  std::cout << "Test 2:\t n=730\n";
57  assert(math::magic_number(730) == true);
58  std::cout << "passed\n";
59 
60  std::cout << "Test 3:\t n=0\n";
61  assert(math::magic_number(0) == false);
62  std::cout << "passed\n";
63 
64  std::cout << "Test 4:\t n=479001600\n";
65  assert(math::magic_number(479001600) == false);
66  std::cout << "passed\n";
67 
68  std::cout << "Test 5:\t n=-35\n";
69  assert(math::magic_number(-35) == false);
70  std::cout << "passed\n";
71 }
Here is the call graph for this function:
std::cout
math::magic_number
bool magic_number(const uint64_t &n)
Definition: magic_number.cpp:32
tests
static void tests()
Test function.
Definition: magic_number.cpp:51