Comprobar si un número es mágico (la suma recursiva de los dígitos es 1)

Se dice que un número es un número mágico, si la suma de sus dígitos se calcula recursivamente hasta un solo dígito sumando la suma de los dígitos después de cada adición. Si el dígito único resulta ser 1, entonces el número es un número mágico. 

Por ejemplo- 
Número= 50113 
=> 5+0+1+1+3=10 
=> 1+0=1 
Este es un Número Mágico 

Por ejemplo- 
Número= 1234 
=> 1+2+3+4=10 
=> 1+0=1 
Este es un Número Mágico

Ejemplos: 

 Input : 1234
Output : Magic Number

Input  : 12345
Output : Not a magic Number

El enfoque utilizó la fuerza bruta. La función sigue sumando dígitos hasta que se alcanza una suma de un solo dígito. Para entender cómo estoy calculando la suma hasta un solo dígito, vea esta página: encontrar la suma de los dígitos de un número hasta que la suma se convierta en un solo dígito

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.
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>
Producción: 

Magic Number

 

Enfoque eficiente (acceso directo): también hay un método abreviado para verificar el número mágico. La función determinará si el resto de dividir la entrada por 9 es 1 o no. Si es 1, entonces el número es un número mágico. La regla de divisibilidad del 9 dice que un número es divisible por 9 si la suma de sus dígitos también es divisible por 9. Por lo tanto, si un número es divisible por 9, entonces, recursivamente, todas las sumas de dígitos también son divisibles por 9. El la suma del dígito final siempre es 9. Un aumento de 1 en el número original aumentará el valor final en 1, convirtiéndolo en 10 y la suma final será 1, verificando así que es un número mágico. 

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.
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>
Producción: 

Magic Number

 

Este artículo es una contribución de Ayush Saxena . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuido@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *