Find N Geometric Means between A and B
Given three integers A, B and N the task is to find N Geometric means between A and B. WE basically need to insert N terms in a Geometric progression. where A and B are first and last terms.
Examples:
Input : A = 2 B = 32 N = 3
Output : 4 8 16
the geometric progression series as 2,
4, 8, 16 , 32
Input : A = 3 B = 81 N = 2
Output : 9 27
Approach :
Let A1, G2, G3, G4……Gn be N geometric Means between two given numbers A and B . Then A, G1, G2 ….. Gn, B will be in Geometric Progression .
So B = (N+2)th term of the Geometric progression.
Then Here R is the common ratio
B = A*RN+1
RN+1 = B/A
R = (B/A)1/(N+1)
Now we have the value of R
And also we have the value of the first term A
G1 = AR1 = A * (B/A)1/(N+1)
G2 = AR2 = A * (B/A)2/(N+1)
G3 = AR3 = A * (B/A)3/(N+1)
.
.
.
GN = ARN = A * (B/A)N/(N+1)
C++
#include <bits/stdc++.h>
using namespace std;
void printGMeans( int A, int B, int N)
{
float R = ( float ) pow ( float (B / A),
1.0 / ( float )(N + 1));
for ( int i = 1; i <= N; i++)
cout << A * pow (R, i) << " " ;
}
int main()
{
int A = 3, B = 81, N = 2;
printGMeans(A, B, N);
return 0;
}
|
Java
import java.io.*;
import java.lang.*;
import java.util.*;
public class GFG {
static void printGMeans( int A, int B, int N)
{
float R = ( float )Math.pow(( float )(B / A),
1.0 / ( float )(N + 1 ));
for ( int i = 1 ; i <= N; i++)
System.out.print(A * Math.pow(R, i) + " " );
}
public static void main(String args[])
{
int A = 3 , B = 81 , N = 2 ;
printGMeans(A, B, N);
}
}
|
Python3
import math
def printGMeans(A, B, N):
R = (math. pow ((B / A),
1.0 / (N + 1 )));
for i in range ( 1 , N + 1 ):
print ( int (A * math. pow (R, i)),
end = " " );
A = 3 ;
B = 81 ;
N = 2 ;
printGMeans(A, B, N);
|
C#
using System;
public class GFG {
static void printGMeans( int A, int B, int N)
{
float R = ( float )Math.Pow(( float )(B / A),
1.0 / ( float )(N + 1));
for ( int i = 1; i <= N; i++)
Console.Write(A * Math.Pow(R, i) + " " );
}
public static void Main()
{
int A = 3, B = 81, N = 2;
printGMeans(A, B, N);
}
}
|
PHP
<?php
function printGMeans( $A , $B , $N )
{
$R = pow(( $B / $A ),
1.0 / ( $N + 1));
for ( $i = 1; $i <= $N ; $i ++)
echo $A * pow( $R , $i ) , " " ;
}
$A = 3;
$B = 81;
$N = 2;
printGMeans( $A , $B , $N );
?>
|
Javascript
<script>
function printGMeans(A, B, N)
{
let R = Math.pow((B / A),
1.0 / (N + 1));
for (let i = 1; i <= N; i++)
document.write(A * Math.pow(R, i) + " " );
}
let A = 3, B = 81, N = 2;
printGMeans(A, B, N);
</script>
|
Output :
9 27
Time Complexity : O(N*log(N)) ,in worst case power function takes log(N) time.
Space Complexity : O(1), since no extra space has been taken.
Last Updated :
27 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...