Open In App

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

Last Updated : 16 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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

Recommended Practice

C++




// CPP program to check if a number is Magic
// number.
#include<iostream>
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.
import java.io.*;
public 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




<?php
// PHP program to check if 
// a number is Magic number.
function 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 || $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




<script>
  
// JavaScript program to check if 
// a number is Magic number.
function isMagic( n)
   {
       var 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
    var n = 1234;
    if (isMagic(n))
    document.write("Magic Number");
           
    else
        document.write("Not a magic Number");
      
// This code is contributed by shivanisinghss2110
  
</script>


Output: 

Magic Number

 

Time Complexity: O(log10n)
Auxiliary Space: O(1), As constant extra space is used.

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 <iostream>
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 <stdio.h>
  
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.
import java.io.*;
public 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




<script>
  
// JavaScript program to check
// Whether the number is Magic or not.
  
// Accepting sample input
var x = 1234;
  
// Condition to check Magic number
if (x % 9 == 1)
    document.write("Magic Number");
else
    document.write("Not a Magic Number");
  
// This code is contributed by shivanisinghss2110 
  
</script>


Output: 

Magic Number

 

Time Complexity: O(1)
Auxiliary Space: O(1) As constant extra space is used.

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads