Una serie geométrica es una serie con una razón constante entre términos sucesivos. El primer término de la serie se denota por a y la razón común se denota por r . La serie se ve así: – a, ar, ar 2 , ar 3 , ar 4 , . . . . La tarea es encontrar la suma de tal serie. Ejemplos:
Input : a = 1 r = 0.5 n = 10 Output : 1.99805 Input : a = 2 r = 2 n = 15 Output : 65534
Una solución simple para calcular la suma de series geométricas.
C++
// A naive solution for calculating sum of // geometric series. #include<bits/stdc++.h> using namespace std; // function to calculate sum of // geometric series float sumOfGP(float a, float r, int n) { float sum = 0; for (int i = 0; i < n; i++) { sum = sum + a; a = a * r; } return sum; } // driver function int main() { int a = 1; // first term float r = 0.5; // common ratio int n = 10; // number of terms cout << sumOfGP(a, r, n) << endl; return 0; }
Java
// A naive solution for calculating sum of // geometric series. import java.io.*; class GFG{ // function to calculate sum of // geometric series static float sumOfGP(float a, float r, int n) { float sum = 0; for (int i = 0; i < n; i++) { sum = sum + a; a = a * r; } return sum; } // driver function public static void main(String args[]) { int a = 1; // first term float r = (float)(1/2.0) ;// common ratio int n = 10 ; // number of terms System.out.printf("%.5f",(sumOfGP(a, r, n))); } } //This code is contributed by Nikita Tiwari
Python
# A naive solution for calculating sum of # geometric series. # function to calculate sum of # geometric series def sumOfGP(a, r, n) : sum = 0 i = 0 while i < n : sum = sum + a a = a * r i = i + 1 return sum #driver function a = 1 # first term r = (float)(1/2.0) # common ratio n = 10 # number of terms print("%.5f" %sumOfGP(a, r, n)), # This code is contributed by Nikita Tiwari
C#
// A naive solution for calculating // sum of geometric series. using System; class GFG { // function to calculate // sum of geometric series static float sumOfGP(float a, float r, int n) { float sum = 0; for (int i = 0; i < n; i++) { sum = sum + a; a = a * r; } return sum; } // Driver Code static public void Main () { // first term int a = 1; // common ratio float r = (float)(1/2.0) ; // number of terms int n = 10 ; Console.WriteLine((sumOfGP(a, r, n))); } } // This code is contributed by Ajit.
PHP
<?php // A naive solution for calculating // sum of geometric series. // function to calculate sum // of geometric series function sumOfGP($a, $r, $n) { $sum = 0; for ($i = 0; $i < $n; $i++) { $sum = $sum + $a; $a = $a * $r; } return $sum; } // Driver Code // first term $a = 1; // common ratio $r = 0.5; // number of terms $n = 10; echo(sumOfGP($a, $r, $n)); // This code is contributed by Ajit. ?>
Producción :
1.99805
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(1)
Una solución eficiente para resolver la suma de series geométricas donde el primer término es a y la razón común es r es mediante la fórmula: – suma de series = a(1 – r n )/(1 – r). Donde r = T2/T1 = T3/T2 = T4/T3. . . y T1, T2, T3, T4. . . ,Tn son el primero, segundo, tercero, . . . ,n-ésimos términos respectivamente. Por ejemplo: la serie es 2, 4, 8, 16, 32, 64, . . . hasta 15 elementos. En la serie anterior, encuentre la suma de los primeros 15 elementos donde el primer término a = 2 y la razón común r = 4/2 = 2 o = 8/4 = 2 Luego, sum = 2 * (1 – 2 15 ) / (1 – 2). suma = 65534
C++
// An Efficient solution to solve sum of // geometric series. #include<bits/stdc++.h> using namespace std; // function to calculate sum of // geometric series float sumOfGP(float a, float r, int n) { // calculating and storing sum return (a * (1 - pow(r, n))) / (1 - r); } // driver code int main() { float a = 2; // first term float r = 2; // common ratio int n = 15; // number of terms cout << sumOfGP(a, r, n); return 0; }
Java
// An Efficient solution to solve sum of // geometric series. import java.math.*; class GFG{ // function to calculate sum of // geometric series static float sumOfGP(float a, float r, int n) { // calculating and storing sum return (a * (1 - (int)(Math.pow(r, n)))) / (1 - r); } // driver code public static void main(String args[]) { float a = 2; // first term float r = 2; // common ratio int n = 15; // number of terms System.out.println((int)(sumOfGP(a, r, n))); } } //This code is contributed by Nikita Tiwari.
Python
# An Efficient solution to solve sum of # geometric series. # function to calculate sum of # geometric series def sumOfGP( a, r, n) : # calculating and storing sum return (a * (1 - pow(r, n))) / (1 - r) # driver code a = 2 # first term r = 2 # common ratio n = 15 # number of terms print sumOfGP(a, r, n) # This code is contributed by Nikita Tiwari.
C#
// C# program to An Efficient solution // to solve sum of geometric series. using System; class GFG { // function to calculate sum of // geometric series static float sumOfGP(float a, float r, int n) { // calculating and storing sum return (a * (1 - (int)(Math.Pow(r, n)))) / (1 - r); } // Driver Code public static void Main() { float a = 2; // first term float r = 2; // common ratio int n = 15; // number of terms Console.Write((int)(sumOfGP(a, r, n))); } } // This code is contributed by Nitin Mittal.
PHP
<?php // An Efficient solution to solve // sum of geometric series. // function to calculate sum // of geometric series function sumOfGP($a, $r, $n) { // calculating and storing sum return ($a * (1 - pow($r, $n))) / (1 - $r); } // Driver Code // first term $a = 2; // common ratio $r = 2; // number of terms $n = 15; echo(sumOfGP($a, $r, $n)); // This code is contributed by Ajit. ?>
Producción :
65534
Complejidad de tiempo: depende de la implementación de la función pow() en C/C++. En general, podemos calcular potencias enteras en tiempo O(Log n) .
Complejidad espacial : O (1) ya que usa variables constantes
Este artículo es una contribución de Dharmendra kumar . 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