Dado un número a y límite N. Encuentra la suma de múltiplos de a hasta N.
Ejemplos:
Input : a = 4, N = 23 Output : sum = 60 [Multiples : 4, 8, 12, 16, 20] Input :a = 7, N = 49 Output :sum = 196 [Multiples: 7, 14, 21, 28, 35, 42, 49]
La idea básica es iterar de i = a a i = n, i++ y verificar si i % a == 0 o no. Si es cero, agregue i a sum (inicialmente sum = 0). Así obtendremos la suma. tomará O(n) tiempo.
Podemos modificar el ciclo como i = a, i <= n, i = i + a para reducir el número de iteraciones. Pero también tomará O(m) tiempo si hay m múltiplos de a.
Para obtener el resultado en tiempo O(1), podemos usar la fórmula de la suma de n números naturales. Para el ejemplo anterior,
a = 4 y N = 23, número de múltiplos de a, m = N/a (división entera) . Los múltiplos son 4, 8, 12, 16, 20.
Podemos escribirlo como 4 X [1, 2, 3, 4, 5]. Entonces podemos obtener la suma de múltiplos como:
sum = a * (Summation of 1 to m [natural numbers from 1 to m]) sum = 4 * (m*(m+1) / 2) sum = 4 * (5*6 / 2) = 4 * 15 = 60
C++
// C++ program to find sum of multiples of a number // up to N efficiently #include <iostream> using namespace std; // Function for calculating sum of multiples of // a upto N int calculate_sum(int a, int N) { // Number of multiples int m = N / a; // sum of first m natural numbers int sum = m * (m + 1) / 2; // sum of multiples int ans = a * sum; return ans; } // Driver code int main() { int a = 7, N = 49; cout << "Sum of multiples of " << a << " up to " << N << " = " << calculate_sum(a, N) << endl; return 0; }
Java
// Java program to find sum of multiples // of a number up to N efficiently class GFG { // Function for calculating sum // of multiples of a upto N static int calculate_sum(int a, int N) { // Number of multiples int m = N / a; // sum of first m natural numbers int sum = m * (m + 1) / 2; // sum of multiples int ans = a * sum; return ans; } // Driver code public static void main(String[] args) { int a = 7, N = 49; System.out.println("Sum of multiples of " + a + " up to " + N + " = " + calculate_sum(a, N)); } } // This code is contributed by Anant Agarwal.
Python3
"""Python program to find sum of multiples of a number up to N""" # Calculates sum of multiples of # a number upto N def calculate_sum(a, N): # Number of multiples m = N / a # sum of first m natural numbers sum = m * (m + 1) / 2 # sum of multiples ans = a * sum print("Sum of multiples of ", a, " up to ", N, " = ", ans) # Driver Code calculate_sum(7, 49) # This code is contributed by Abhishek Agrawal.
C#
// C# program to find sum of multiples // of a number up to N efficiently using System; class GFG { // Function for calculating sum // of multiples of a upto N static int calculate_sum(int a, int N) { // Number of multiples int m = N / a; // sum of first m natural numbers int sum = m * (m + 1) / 2; // sum of multiples int ans = a * sum; return ans; } // Driver code public static void Main() { int a = 7, N = 49; Console.WriteLine("Sum of multiples of " + a + " up to " + N + " = " + calculate_sum(a, N)); } } // This code is contributed by vt_m.
PHP
<?php // PHP program to find sum // of multiples of a number // up to N efficiently // Function for calculating sum // of multiples of a upto N function calculate_sum($a, $N) { // Number of multiples $m = $N / $a; // sum of first m // natural numbers $sum = $m * ($m + 1) / 2; // sum of multiples $ans = $a * $sum; return $ans; } // Driver code $a = 7; $N = 49; echo "Sum of multiples of ". $a , " up to " . $N . " = " . calculate_sum($a, $N) ; // This code is contributed by Sam007 ?>
Javascript
<script> // Javascript program to find sum // of multiples of a number // up to N efficiently // Function for calculating sum // of multiples of a upto N function calculate_sum(a, N) { // Number of multiples m = N / a; // Sum of first m // natural numbers sum = m * (m + 1) / 2; // Sum of multiples ans = a * sum; return ans; } // Driver code let a = 7; let N = 49; document.write("Sum of multiples of "+ a + " up to " + N + " = " + calculate_sum(a, N)); // This code is contributed by mohan1240760 </script>
Producción :
Sum of multiples of 7 upto 49 = 196
Complejidad temporal: O(1)
Espacio auxiliar: O(1)
Este artículo es una contribución de Sukanta Nandi . 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 review-team@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