Multiplicar número perfecto

Se dice que un número N es un número perfecto múltiple si N divide a sigma(N), donde sigma(N) = suma de todos los divisores de N .
Los primeros números multiplicados por perfectos son: 
 

1, 6, 28, 120, 496, 672, …….. 
 

Comprueba si N es un número multiplicado por perfecto

Dado un número N , la tarea es encontrar si este número es un número perfecto o no. 
Ejemplos: 
 

Entrada: N = 120 
Salida: SÍ 
Explicación: 
La suma de los divisores de 120 es 1 + 2 + 3 + 4 + 5 + 6 + 8 + 10 + 12 + 15 + 20 + 24 + 30 + 40 + 60 + 120 = 360 y 120 divide 360. 
Por lo tanto, 120 es un número multiplicado por perfecto.
Entrada: N = 32 
Salida: No 
 

Enfoque : para que un número N sea un número multiplicado por perfecto, la siguiente condición debe cumplirse: sigma(N) % N = 0 , donde sigma(N) = suma de todos los divisores de N . Por lo tanto, encontraremos la suma de todos los divisores de N y comprobaremos si es divisible por N o no. Si es divisible, escriba «Sí» , de lo contrario, escriba «No» .
A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation of the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the
// sum of divisors
int getSum(int n)
{
    int sum = 0;
 
    // Note that this loop
    // runs till square root of N
    for (int i = 1; i <= sqrt(n); i++) {
        if (n % i == 0) {
 
            // If divisors are equal,
            // take only one of them
            if (n / i == i)
                sum = sum + i;
 
            // Otherwise take both
            else {
                sum = sum + i;
                sum = sum + (n / i);
            }
        }
    }
 
    return sum;
}
 
// Function to check Multiply-perfect number
bool MultiplyPerfectNumber(int n)
{
    if (getSum(n) % n == 0)
        return true;
    else
        return false;
}
 
// Driver code
int main()
{
 
    int n = 28;
    if (MultiplyPerfectNumber(n)) {
        cout << "Yes";
    }
    else {
        cout << "No";
    }
    return 0;
}

Java

// Java implementation of the above approach
class GFG{
     
// Function to find the
// sum of divisors
static int getSum(int n)
{
    int sum = 0;
 
    // Note that this loop
    // runs till square root of N
    for(int i = 1; i <= Math.sqrt(n); i++)
    {
       if (n % i == 0)
       {
            
           // If divisors are equal,
           // take only one of them
           if (n / i == i)
               sum = sum + i;
            
           // Otherwise take both
           else
           {
               sum = sum + i;
               sum = sum + (n / i);
           }
       }
    }
    return sum;
}
 
// Function to check Multiply-perfect number
static boolean MultiplyPerfectNumber(int n)
{
    if (getSum(n) % n == 0)
        return true;
    else
        return false;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 28;
     
    if (MultiplyPerfectNumber(n))
    {
        System.out.print("Yes");
    }
    else
    {
        System.out.print("No");
    }
}
}
 
// This code is contributed by Ritik Bansal

Python3

# Python3 implementation of the above approach
import math
 
# Function to find the
# sum of divisors
def getSum(n):
 
    sum1 = 0;
 
    # Note that this loop
    # runs till square root of N
    for i in range(1, int(math.sqrt(n))):
        if (n % i == 0):
 
            # If divisors are equal,
            # take only one of them
            if (n // i == i):
                sum1 = sum1 + i;
 
            # Otherwise take both
            else:
                sum1 = sum1 + i;
                sum1 = sum1 + (n // i);
             
    return sum1;
 
# Function to check Multiply-perfect number
def MultiplyPerfectNumber(n):
 
    if (getSum(n) % n == 0):
        return True;
    else:
        return False;
 
# Driver code
n = 28;
if (MultiplyPerfectNumber(n)):
    print("Yes");
else:
    print("No");
 
# This code is contributed by Code_Mech

C#

// C# implementation of the above approach
using System;
class GFG{
     
// Function to find the
// sum of divisors
static int getSum(int n)
{
    int sum = 0;
 
    // Note that this loop
    // runs till square root of N
    for(int i = 1; i <= Math.Sqrt(n); i++)
    {
       if (n % i == 0)
       {
            
           // If divisors are equal,
           // take only one of them
           if (n / i == i)
               sum = sum + i;
            
           // Otherwise take both
           else
           {
               sum = sum + i;
               sum = sum + (n / i);
           }
       }
    }
    return sum;
}
 
// Function to check Multiply-perfect number
static bool MultiplyPerfectNumber(int n)
{
    if (getSum(n) % n == 0)
        return true;
    else
        return false;
}
 
// Driver code
public static void Main()
{
    int n = 28;
     
    if (MultiplyPerfectNumber(n))
    {
        Console.Write("Yes");
    }
    else
    {
        Console.Write("No");
    }
}
}
 
// This code is contributed by Code_Mech

Javascript

<script>
// Javascript implementation of the above approach
 
    // Function to find the
    // sum of divisors
    function getSum( n)
    {
        let sum = 0;
 
        // Note that this loop
        // runs till square root of N
        for ( i = 1; i <= Math.sqrt(n); i++)
        {
            if (n % i == 0)
            {
 
                // If divisors are equal,
                // take only one of them
                if (n / i == i)
                    sum = sum + i;
 
                // Otherwise take both
                else {
                    sum = sum + i;
                    sum = sum + (n / i);
                }
            }
        }
        return sum;
    }
 
    // Function to check Multiply-perfect number
    function MultiplyPerfectNumber( n) {
        if (getSum(n) % n == 0)
            return true;
        else
            return false;
    }
 
    // Driver code
      
    let n = 28;
    if (MultiplyPerfectNumber(n)) {
        document.write("Yes");
    } else {
        document.write("No");
    }
 
// This code is contributed by Rajput-Ji
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(N 1/2 )

Espacio Auxiliar: O(1)

Referencias: https://en.wikipedia.org/wiki/Multiply_perfect_number
 

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *