Logarithmic function is the inverse to the exponential function. A logarithm to the base b is the power to which b must be raised to produce a given number. For example, is equal to the power to which 2 must be raised to in order to produce 8. Clearly, 2^3 = 8 so = 3. In general, for b > 0 and b not equal to 1.
Fact about Logarithm :
- Logarithms were quickly adopted by scientists because of various useful properties that simplified long, tedious calculations.
- Logarithm to base 10 (that is b = 10) is called the common logarithm and has many applications in science and engineering.
- Natural logarithm, is a logarithm with base e. It is used in mathematics and physics, because of its simpler derivative.
- Binary logarithm is a logarithm with base 2 and is commonly used in computer science.
Laws of Logarithms :
Laws | Description |
---|---|
+ | |
– | |
* | |
How to find logarithm of number?
Naive solution:
The idea is to create a function that calculates and returns . For example, if n = 64, then your function should return 6, and if n = 129, then your function should return 7.
C
// C program to find log(n) using Recursion #include <stdio.h> unsigned int Log2n(unsigned int n) { return (n > 1) ? 1 + Log2n(n / 2) : 0; } int main() { unsigned int n = 32; printf ( "%u" , Log2n(n)); getchar (); return 0; } |
Java
// Java program to find log(n) // using Recursion class Gfg1 { static int Log2n( int n) { return (n > 1 ) ? 1 + Log2n(n / 2 ) : 0 ; } // Driver Code public static void main(String args[]) { int n = 32 ; System.out.println(Log2n(n)); } } |
Python3
# Python 3 program to # find log(n) using Recursion def Log2n(n): return 1 + Log2n(n / 2 ) if (n > 1 ) else 0 # Driver code n = 32 print (Log2n(n)) |
C#
// C# program to find log(n) // using Recursion using System; class GFG { static int Log2n( int n) { return (n > 1) ? 1 + Log2n(n / 2) : 0; } // Driver Code public static void Main() { int n = 32; Console.Write(Log2n(n)); } } |
PHP
<?php // PHP program // to find log(n) using Recursion function Log2n( $n ) { return ( $n > 1) ? 1 + Log2n( $n / 2) : 0; } // Drive main $n = 32; echo Log2n( $n ); ?> |
Output :
5
Time complexity: O(log n)
Auxiliary space: O(log n) if the stack size is considered during recursion otherwise O(1)
Efficient solutions:
Practice problems on Logarithm:
Question 1: Find the value of x in equation given 8^{x+1} – 8^{x-1} = 63
Solution: Take 8^{x-1} common from the eq.
It reduce to
8^{x-1}(8^{2} – 1) = 63
8^{x-1} = 1
Hence, x – 1 = 0
x = 1
Question 2: Find the value of x for the eq. given log_{0.25}x = 16
Solution: log_{0.25}x = 16
It can be write as
x = (0.25)^{16}
x = (1/4)^{16}
x = 4^{-16}
Question 3: Solve the equation log_{12}1728 x log_{9}6561
Solution: It can be written as
log_{12}(12^{3}) x log_{9}(9^{4})
= 3log_{12}12 x 4log_{9}9
= 3 x 4 = 12
Question 4: Solve for x
log_{x}3 + log_{x}9 + log_{x}27 + log_{x}81 = 10
Solution: It can be write as
log_{x}(3 x 9 x 27 x 81) = 10
log_{x}(3^{1} x 3^{2} x 3^{3} x 3^{4}) = 10
log_{x}(3^{10}) = 10
10 log_{x}3 = 10
then, x = 3
Question 5: If log(a + 3 ) + log(a – 3) = 1 ,then a=?
Solution: log_{10}((a + 3)(a – 3))=1
log_{10}(a^{2} – 9) = 1
(a^{2} – 9) = 10
a^{2} = 19
a = √19
Question 6: Solve 1/log_{ab}(abcd) + 1/log_{bc}(abcd) + 1/log_{cd}(abcd) + 1/log_{da}(abcd)
Solution:
=log_{abcd}(ab) + log_{abcd}(bc) + log_{abcd}(cd) + log_{abcd}(da)
=log_{abcd}(ab * bc * cd * da)
=log_{abcd}(abcd)^{2}
=2 log_{abcd}(abcd)
=2
Question 7: If xyz = 10 , then solve log(x^{n} y^{n} / z^{n}) + log(y^{n} z^{n} / x^{n}) + log(z^{n} x^{n} / y^{n})
Solution:
log(x^{n} y^{n} / z^{n} * y^{n} z^{n} / x^{n} * z^{n} x^{n} / y^{n})
= log x^{n} y^{n} z^{n}
= log(xyz)^{n}
= log_{10} 10^{n}
= n
Question 8: Find (121/10)^{x} = 3
Solution: Apply logarithm on both sides
log_{(121/10)}(121/10)^{x} = log_{(121/10)}3
x = (log 3) / (log 121 – log 10)
x = (log 3) / (2 log 11 – 1)
Question 9: Solve log(2x^{2} + 17)= log (x – 3)^{2}
Solution:
log(2x^{2} + 17)= log (x^{2} – 6x + 9)
2x^{2} + 17 = x^{2} – 6x + 9
x^{2} + 6x + 8 = 0
x^{2} + 4x + 2x + 8 = 0
x(x + 4) + 2(x + 4) = 0
(x + 4)(x + 2)=0
x= -4,-2
Question 10: log_{2}(33 – 3^{x})= 10^{log(5 – x)}. Solve for x.
Solution: Put x = 0
log_{2}(33 – 1)= 10^{log(5)}
log_{2}32 = 5
5 log_{2} 2 = 5
5 = 5
LHS = RHS
More problems related to Logarithm :
- Find minimum number of Log value needed to calculate Log upto N
- Find maximum among x^(y^2) or y^(x^2) where x and y are given
- Print all substring of a number without any conversion
- Program to compare m^n and n^m
- Find larger of x^y and y^x
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
Recommended Posts:
- Discrete logarithm (Find an integer k such that a^k is congruent modulo b)
- Iterated Logarithm log*(n)
- Logarithm tricks for Competitive Programming
- Largest area in a grid unbounded by towers
- Split array into maximum subarrays such that every distinct element lies in a single subarray
- GCD of all subarrays of size K
- Count minimum number of moves to front or end to sort an array
- Rearrange array to make it non-decreasing by swapping pairs having GCD equal to minimum array element
- Sum of maximum and minimum of Kth subset ordered by increasing subset sum
- Maximum distinct prime factors of elements in a K-length subarray
- Count possible splits of sum N into K integers such that the minimum is at least P
- Construct an AP series consisting of A and B having minimum possible Nth term
- Smallest subarray of size greater than K with sum greater than a given value
- Minimize count of given operations required to make two given strings permutations of each other
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.