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
- Count numbers from given range having odd digits at odd places and even digits at even places
- Modify given array by reducing each element by its next smaller element
- Farthest index that can be reached from the Kth index of given array by given operations
- Check if given polygon is a convex polygon or not
- Split array into equal length subsets with maximum sum of Kth largest element of each subset
- Print all possible K-length subsequences of first N natural numbers with sum N
- Minimize given flips required to reduce N to 0
- Minimize difference between maximum and minimum array elements by exactly K removals
- Split squares of first N natural numbers into two sets with minimum absolute difference of their sums
- Remove characters from given string whose frequencies are a Prime Number
- Friedman Test
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.