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.