# Check if a number is magic (Recursive sum of digits is 1)

• Difficulty Level : Basic
• Last Updated : 14 Jul, 2021

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.

For example-
Number= 50113
=> 5+0+1+1+3=10
=> 1+0=1
This is a Magic Number

For example-
Number= 1234
=> 1+2+3+4=10
=> 1+0=1
This is a Magic Number

Examples :

``` Input : 1234
Output : Magic Number

Input  : 12345
Output : Not a magic Number```

The approach used brute force. The function keeps adding digits until a single digit sum is reached. To understand how i am calculating the sum upto a single digit view this page- Finding sum of digits of a number until sum becomes single digit

## C++

 `// CPP program to check if a number is Magic``// number.``#include``using` `namespace` `std;` `bool` `isMagic(``int` `n)``{``    ``int` `sum = 0;``    ` `    ``// Note that the loop continues``    ``// if n is 0 and sum is non-zero.``    ``// It stops when n becomes 0 and``    ``// sum becomes single digit.``    ``while` `(n > 0 || sum > 9)``    ``{``        ``if` `(n == 0)``        ``{``            ``n = sum;``            ``sum = 0;``        ``}``        ``sum += n % 10;``        ``n /= 10;``    ``}``    ` `    ``// Return true if sum becomes 1.``    ``return` `(sum == 1);``}`` ` `// Driver code``int` `main()``{``    ``int` `n = 1234;``    ``if` `(isMagic(n))``        ``cout << ``"Magic Number"``;``    ``else``        ``cout << ``"Not a magic Number"``;``    ``return` `0;``}`

## Java

 `// Java program to check if``// a number is Magic number.``class` `GFG``{``   ``public` `static` `boolean` `isMagic(``int` `n)``   ``{``       ``int` `sum = ``0``;``     ` `       ``// Note that the loop continues``       ``// if n is 0 and sum is non-zero.``       ``// It stops when n becomes 0 and``       ``// sum becomes single digit.``       ``while` `(n > ``0` `|| sum > ``9``)``       ``{``           ``if` `(n == ``0``)``           ``{``               ``n = sum;``               ``sum = ``0``;``           ``}``           ``sum += n % ``10``;``           ``n /= ``10``;``       ``}``     ` `       ``// Return true if sum becomes 1.``       ``return` `(sum == ``1``);``   ``}``  ` `   ``// Driver code``   ``public` `static` `void` `main(String args[])``    ``{``     ``int` `n = ``1234``;``     ``if` `(isMagic(n))``        ``System.out.println(``"Magic Number"``);``         ` `     ``else``        ``System.out.println(``"Not a magic Number"``);``    ``}``}` `// This code is contributed by Anshika Goyal.`

## Python3

 `# Python3 program to check``# if a number is Magic``# number.` `def` `isMagic(n):``    ``sum` `=` `0``;``    ` `    ``# Note that the loop``    ``# continues if n is 0``    ``# and sum is non-zero.``    ``# It stops when n becomes``    ``# 0 and sum becomes single``    ``# digit.``    ``while` `(n > ``0` `or` `sum` `> ``9``):``        ``if` `(n ``=``=` `0``):``            ``n ``=` `sum``;``            ``sum` `=` `0``;``        ``sum` `=` `sum` `+` `n ``%` `10``;``        ``n ``=` `int``(n ``/` `10``);``        ` `    ``# Return true if``    ``# sum becomes 1.``    ``return` `True` `if` `(``sum` `=``=` `1``) ``else` `False``;` `# Driver code``n ``=` `1234``;``if` `(isMagic(n)):``    ``print``(``"Magic Number"``);``else``:``    ``print``(``"Not a magic Number"``);``    ` `# This code is contributed``# by mits.`

## C#

 `// C# program to check if``// a number is Magic number.``using` `System;` `class` `GFG``{``    ``public` `static` `bool` `isMagic(``int` `n)``    ``{``        ``int` `sum = 0;``        ` `        ``// Note that the loop continues``        ``// if n is 0 and sum is non-zero.``        ``// It stops when n becomes 0 and``        ``// sum becomes single digit.``        ``while` `(n > 0 || sum > 9)``        ``{``            ``if` `(n == 0)``            ``{``                ``n = sum;``                ``sum = 0;``            ``}``            ``sum += n % 10;``            ``n /= 10;``        ``}``        ` `        ``// Return true if sum becomes 1.``        ``return` `(sum == 1);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 1234;``        ``if` `(isMagic(n))``            ``Console.WriteLine(``"Magic Number"``);``            ` `        ``else``            ``Console.WriteLine(``"Not a magic Number"``);``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ` 0 || ``\$sum` `> 9)``    ``{``        ``if` `(``\$n` `== 0)``        ``{``            ``\$n` `= ``\$sum``;``            ``\$sum` `= 0;``        ``}``        ``\$sum` `+= ``\$n` `% 10;``        ``\$n` `/= 10;``    ``}``    ` `    ``// Return true if``    ``// sum becomes 1.``    ``return` `(``\$sum` `== 1);``}` `// Driver code``\$n` `= 1234;``if` `(isMagic(``\$n``))``    ``echo``"Magic Number"``;``else``    ``echo` `"Not a magic Number"``;` `// This code is contributed``// by nitin mittal.``?>`

## Javascript

 ``

Output:

`Magic Number`

Efficient Approach(Shortcut): There is also a shortcut method to verify Magic Number. The function will determine if the remainder on dividing the input by 9 is 1 or not. If it is 1, then the number is a magic number. 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.

## C++

 `// C++ program to check``// Whether the number is Magic or not.``#include ``using` `namespace` `std;` `int` `main() {``    ``// Accepting sample input``    ``int` `x = 1234;``    ` `    ``// Condition to check Magic number``    ``if``(x%9==1)``        ``cout << (``"Magic Number"``);``    ``else``        ``cout << (``"Not a Magic Number"``);    ` `    ``return` `0;``}`

## C

 `// C program to check``// Whether the number is Magic or not.``#include ` `int` `main() {``    ` `    ``// Accepting sample input``    ``int` `x = 1234;``    ` `    ``// Condition to check Magic number``    ``if``(x%9==1)``        ``printf``(``"Magic Number"``);``    ``else``        ``printf``(``"Not a Magic Number"``);      ` `    ``return` `0;``}`

## Java

 `// Java program to check``// Whether the number is Magic or not.``class` `GFG{``    ` `public` `static` `void` `main(String[] args)``{``    ` `    ``// Accepting sample input``    ``int` `x = ``1234``;` `    ``// Condition to check Magic number``    ``if` `(x % ``9` `== ``1``)``        ``System.out.printf(``"Magic Number"``);``    ``else``        ``System.out.printf(``"Not a Magic Number"``);``}``}` `// This code is contributed by Amit Katiyar`

## Python3

 `# Python3 program to check``# Whether the number is Magic or not.` `# Accepting sample input``x ``=` `1234` `# Condition to check Magic number``if` `(x ``%` `9` `=``=` `1``):``    ``print``(``"Magic Number"``)``else``:``    ``print``(``"Not a Magic Number"``)` `# This code is contributed by kirti`

## C#

 `// C# program to check``// Whether the number is Magic or not.``using` `System;``using` `System.Collections.Generic;` `class` `GFG{``    ` `public` `static` `void` `Main(String[] args)``{``    ` `    ``// Accepting sample input``    ``int` `x = 1234;` `    ``// Condition to check Magic number``    ``if` `(x % 9 == 1)``        ``Console.Write(``"Magic Number"``);``    ``else``        ``Console.Write(``"Not a Magic Number"``);``}``}` `// This code is contributed by Princi Singh`

## Javascript

 ``

Output:

`Magic Number`

This article is contributed by Ayush Saxena. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.