A sequence of numbers is called a Geometric progression if the ratio of any two consecutive terms is always the same.

In simple terms, A geometric series is a list of numbers where each number, or term, is found by multiplying the previous term by a common ratio r. The general form of Geometric Progression is:

Where,
a = First term
r = common ratio
arn-1 = nth term
Example:
The sequence 2, 4, 8, 16 is a GP because ratio of any two consecutive terms in the series (common difference) is same (4 / 2 = 8 / 4 = 16 / 8 = 2).
The geometric progression is of two types:
- Finite geometric progression
- Infinite geometric progression.
1. Finite geometric progression
In finite geometric progression contains a finite number of terms. The last term is always defined in this type of progression.
Example:
The sequence 1/2,1/4,1/8,1/16,...,1/32768 is a finite geometric series where the first term is 1/2 and the last term is 1/32768.
2. Infinite geometric progression
Infinite geometric progression contains an infinite number of terms. The last term is not defined in this type of progression.
Example:
Sequence 3, 9, 27, 81, ... is an infinite series where the first term is 3 but the last term is not defined.
Fact about Geometric Progression:
- Initial term: In a geometric progression, the first number is called the initial term.
- Common ratio: The ratio between a term in the sequence and the term before it is called the "common ratio."
- The behavior of a geometric sequence depends on the value of the common ratio. If the common ratio is:
- Positive, the terms will all be the same sign as the initial term.
- Negative, the terms will alternate between positive and negative.
- Greater than 1, there will be exponential growth towards positive or negative infinity (depending on the sign of the initial term).
- 1, the progression is a constant sequence.
- Between -1 and 1 but not zero, there will be exponential decay towards zero.
- -1, the progression is an alternating sequence.
- Less than -1, for the absolute values there is exponential growth towards (unsigned) infinity, due to the alternating sign.
The formula for the nth term of a Geometric Progression:
If ‘a1' is the first term and ‘r’ is the common ratio. Thus, the explicit formula for nth term of finite GP series:

The formula for the sum of the nth term of Geometric Progression:

How do we check whether a series is a Geometric progression or not?
The property of the GP series is that the ratio of the consecutive terms is same.
Approach:
- First calculate the common ratio r by arr[1] / arr[0]
- Iterate over an array and calculate the ratio of the consecutive terms.
- Check if the calculated ratio is not equal to the common ratio r
- Return false
- After traversal, if the calculated ratio is equal to the common ratio r every time
- Return true
Below is the implementation of the above approach:
// C++ program to check if a given array
// can form geometric progression
#include <bits/stdc++.h>
using namespace std;
bool is_geometric(int arr[], int n)
{
if (n == 1)
return true;
// Calculate ratio
int ratio = arr[1] / (arr[0]);
// Check the ratio of the remaining
for (int i = 1; i < n; i++) {
if ((arr[i] / (arr[i - 1])) != ratio) {
return false;
}
}
return true;
}
// Driven Program
int main()
{
int arr[] = { 2, 6, 18, 54 };
int n = sizeof(arr) / sizeof(arr[0]);
(is_geometric(arr, n)) ? (cout << "True" << endl)
: (cout << "False" << endl);
return 0;
}
// Java program to check if a given array
// can form geometric progression
import java.util.Arrays;
class GFG {
// function to check series is
// geometric progression or not
static boolean is_geometric(int arr[], int n)
{
if (n == 1)
return true;
// Calculate ratio
int ratio = arr[1] / (arr[0]);
// Check the ratio of the remaining
for (int i = 1; i < n; i++) {
if ((arr[i] / (arr[i - 1])) != ratio) {
return false;
}
}
return true;
}
// driver code
public static void main(String[] args)
{
int arr[] = { 2, 6, 18, 54 };
int n = arr.length;
if (is_geometric(arr, n))
System.out.println("True");
else
System.out.println("False");
}
}
def is_geometric(li):
if len(li) <= 1:
return True
# Calculate ratio
ratio = li[1]/float(li[0])
# Check the ratio of the remaining
for i in range(1, len(li)):
if li[i]/float(li[i-1]) != ratio:
return False
return True
print(is_geometric([2, 6, 18, 54]))
// C# program to check if a given array
// can form geometric progression
using System;
class Geeks {
static bool is_geometric(int[] arr, int n)
{
if (n == 1)
return true;
// Calculate ratio
int ratio = arr[1] / (arr[0]);
// Check the ratio of the remaining
for (int i = 1; i < n; i++) {
if ((arr[i] / (arr[i - 1])) != ratio) {
return false;
}
}
return true;
}
// Driven Program
public static void Main(String[] args)
{
int[] arr = new int[] { 2, 6, 18, 54 };
int n = arr.Length;
if (is_geometric(arr, n))
Console.WriteLine("True");
else
Console.WriteLine("False");
}
}
<script>
// Javascript program to check if a given array
// can form geometric progression
// Function to check series is
// geometric progression or not
function is_geometric(arr, n)
{
if (n == 1)
return true;
// Calculate ratio
let ratio = parseInt(arr[1] / (arr[0]));
// Check the ratio of the remaining
for(let i = 1; i < n; i++)
{
if (parseInt((arr[i] /
(arr[i - 1]))) != ratio)
{
return false;
}
}
return true;
}
// Driver code
let arr = [ 2, 6, 18, 54 ];
let n = arr.length;
(is_geometric(arr, n)) ?
(document.write("True")) :
(document.write("False"));
// This code is contributed by souravmahato348
</script>
<?php
function is_geometric($arr)
{
if (sizeof($arr) <= 1)
return True;
# Calculate ratio
$ratio = $arr[1]/$arr[0];
# Check the ratio of the remaining
for($i=1; $i<sizeof($arr); $i++)
{
if (($arr[$i]/($arr[$i-1])) != $ratio)
{
return "Not a geometric sequence";
}
}
return "Geometric sequence";
}
$my_arr1 = array(2, 6, 18, 54);
print_r(is_geometric($my_arr1)."\n");
print_r(is_geometric($my_arr2)."\n");
?>
Output
True
Time Complexity: O(n), Where n is the length of the given array.
Auxiliary Space: O(1)
Basic Program related to Geometric Progression
- Program to print GP (Geometric Progression)
- Program for sum of geometric series
- Find the missing number in Geometric Progression
- Program for N-th term of Geometric Progression series
- Find all triplets in a sorted array that forms Geometric Progression
- Removing a number from array to make it Geometric Progression
- Minimum number of operations to convert a given sequence into a Geometric Progression
- Number of GP (Geometric Progression) subsequences of size 3
More problems related to Geometric Progression