Suma alícuota

En la teoría de números, la suma alícuota s(n) de un entero positivo n es la suma de todos los divisores propios de n, es decir, todos los divisores de n que no sean el mismo n.
Se definen por las sumas de sus divisores alícuotas. Los divisores alícuotas de un número son todos sus divisores excepto el propio número. La suma de las alícuotas es la suma de los divisores de las alícuotas, por ejemplo, los divisores de las alícuotas de 12 son 1, 2, 3, 4 y 6 y su suma de las alícuotas es 16.
Un número cuya suma de las alícuotas es igual a su valor es un número PERFECTO (6 por ejemplo).
Ejemplos: 
 

Input : 12
Output : 16
Explanation :
Proper divisors of 12 is = 1, 2, 3, 4, 6 
and sum 1 + 2 + 3 + 4 + 6 = 16

Input : 15
Output : 9
Explanation :
Proper divisors of 15 is 1, 3, 5
and sum 1 + 3 + 5 = 9

Una solución simple es atravesar todos los números menores que n. Para cada número i, comprueba si i divide a n. Si es así, lo agregamos al resultado. 
 

C++

// CPP program for aliquot sum
#include <iostream>
using namespace std;
 
// Function to calculate sum of
// all proper divisors
int aliquotSum(int n)
{
    int sum = 0;
    for (int i = 1; i < n; i++)
        if (n % i == 0)
            sum += i;       
     
    return sum;
}
 
// Driver Code
int main()
{
    int n = 12;
    cout << aliquotSum(n);
    return 0;
}

Java

// Java program for aliquot sum
import java.io.*;
 
class GFG {
     
    // Function to calculate sum of
    // all proper divisors
    static int aliquotSum(int n)
    {
        int sum = 0;
        for (int i = 1; i < n; i++)
            if (n % i == 0)
                sum += i;
                 
        return sum;
    }
     
    // Driver Code
    public static void main(String args[])
                           throws IOException
    {
        int n = 12;
        System.out.println(aliquotSum(n));
    }
}
 
/* This code is contributed by Nikita Tiwari.*/

Python3

# Python 3 program for aliquot sum
 
# Function to calculate sum of
# all proper divisors
def aliquotSum(n) :
    sm = 0
    for i in range(1,n) :
        if (n % i == 0) :
            sm = sm + i    
     
    return sm # return sum
 
 
# Driver Code
n = 12
print(aliquotSum(n))
 
# This code is contributed by Nikita Tiwari.

C#

// C# program for aliquot sum
using System;
 
class GFG {
     
    // Function to calculate sum of
    // all proper divisors
    static int aliquotSum(int n)
    {
        int sum = 0;
        for (int i = 1; i < n; i++)
            if (n % i == 0)
                sum += i;
                 
        return sum;
    }
     
    // Driver Code
    public static void Main()
                         
    {
        int n = 12;
        Console.WriteLine(aliquotSum(n));
    }
}
 
/* This code is contributed by vt_m.*/

PHP

<?php
// PHP program for aliquot sum
 
// Function to calculate sum of
// all proper divisors
function aliquotSum($n)
{
    $sum = 0;
    for ($i = 1; $i < $n; $i++)
        if ($n % $i == 0)
            $sum += $i;    
     
    return $sum;
}
 
// Driver Code
$n = 12;
echo(aliquotSum($n));
 
// This code is contributed by Ajit.
?>

Javascript

<script>
 
// JavaScript program for aliquot sum
 
// Function to calculate sum of
// all proper divisors
    function aliquotSum(n)
    {
        let sum = 0;
        for (let i = 1; i < n; i++)
            if (n % i == 0)
                sum += i;
                   
        return sum;
    }
       
 
// Driver code
         
        let n = 12;
        document.write(aliquotSum(n));
         
</script>

Producción : 

16

Complejidad temporal: O(n) 
Espacio auxiliar: O(1)

Soluciones eficientes: 
Suma de todos los divisores propios de un número natural  
Suma de todos los factores de un número
 

Sugiera si alguien tiene una mejor solución que sea más eficiente en términos de espacio y tiempo.
Este artículo es una contribución de Aarti_Rathi . 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 Aliez 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 *