Program to compute log a to any base b (logb a) - GeeksforGeeks

19 Mar, 2022
Given two integers a and b, the task is to find the log of a to any base b, i.e. logb a.Examples:  
Input: a = 3, b = 2
Output: 1

Input: a = 256, b = 4
Output: 4
 
 
 
Find the log of a to the base 2 with the help of log2() method  Find the log of b to the base 2 with the help of log2() method  Divide the computed log a from the log b to get the logb a, i.e,  
Find the log of a to the base 2 with the help of log2() method  
Find the log of b to the base 2 with the help of log2() method  
Divide the computed log a from the log b to get the logb a, i.e,  
Below is the implementation of the above approach  
C++
C
Java
Python3
C#
Javascript
// C++ program to find log(a) on any base b#include <bits/stdc++.h>using namespace std; int log_a_to_base_b(int a, int b){    return log2(a) / log2(b);} // Driver codeint main(){    int a = 3;    int b = 2;    cout << log_a_to_base_b(a, b) << endl;     a = 256;    b = 4;    cout << log_a_to_base_b(a, b) << endl;     return 0;} // This code is contributed by shubhamsingh10, yousefonweb
// C program to find log(a) on any base b #include <math.h>#include <stdio.h> int log_a_to_base_b(int a, int b){    return log2(a) / log2(b);} // Driver codeint main(){    int a = 3;    int b = 2;    printf("%d\n",           log_a_to_base_b(a, b));     a = 256;    b = 4;    printf("%d\n",           log_a_to_base_b(a, b));     return 0;}
// Java program to find log(a) on any base bclass GFG{         static int log_a_to_base_b(int a, int b)    {        return (int)(Math.log(a) / Math.log(b));    }         // Driver code    public static void main (String[] args)    {        int a = 3;        int b = 2;        System.out.println(log_a_to_base_b(a, b));             a = 256;        b = 4;        System.out.println(log_a_to_base_b(a, b));    }} // This code is contributed by AnkitRai01
# Python3 program to find log(a) on any base bfrom math import log2 def log_a_to_base_b(a, b) :    return log2(a) // log2(b); # Driver codeif __name__ == "__main__" :         a = 3;    b = 2;    print(log_a_to_base_b(a, b));     a = 256;    b = 4;    print(log_a_to_base_b(a, b)); # This code is contributed by AnkitRai01
// C# program to find log(a) on any base b using System; public class GFG{         static int log_a_to_base_b(int a, int b)    {        return (int)(Math.Log(a) / Math.Log(b));    }         // Driver code    public static void Main()    {        int a = 3;        int b = 2;        Console.WriteLine(log_a_to_base_b(a, b));             a = 256;        b = 4;        Console.WriteLine(log_a_to_base_b(a, b));    }} // This code is contributed by AnkitRai01
<script> // Javascript program to find log(a) on any base b function log_a_to_base_b(a, b){    return parseInt(Math.log(a) / Math.log(b));} // Driver codevar a = 3;var b = 2;document.write(log_a_to_base_b(a, b) + "<br>");a = 256;b = 4;document.write(log_a_to_base_b(a, b)); // This code is contributed by rutvik_56.</script>
1
4
 
Time Complexity: O(logba)
Auxiliary Space: O(1)
Recursively divide a by b till a is greater than b.  Count the number of times the divide is possible. This is the log of a to the base b, i.e. logb a  
Recursively divide a by b till a is greater than b.  
Count the number of times the divide is possible. This is the log of a to the base b, i.e. logb a  
Below is the implementation of the above approach  
C++
C
Java
Python3
C#
Javascript
// C++ program to find log(a) on// any base b using Recursion#include <iostream>using namespace std; // Recursive function to compute// log a to the base bint log_a_to_base_b(int a, int b){    return (a > b - 1)            ? 1 + log_a_to_base_b(a / b, b)            : 0;} // Driver codeint main(){    int a = 3;    int b = 2;    cout << log_a_to_base_b(a, b) << endl;     a = 256;    b = 4;    cout << log_a_to_base_b(a, b) << endl;     return 0;} // This code is contributed by shubhamsingh10
// C program to find log(a) on// any base b using Recursion #include <stdio.h> // Recursive function to compute// log a to the base bint log_a_to_base_b(int a, int b){    return (a > b - 1)               ? 1 + log_a_to_base_b(a / b, b)               : 0;} // Driver codeint main(){    int a = 3;    int b = 2;    printf("%d\n",           log_a_to_base_b(a, b));     a = 256;    b = 4;    printf("%d\n",           log_a_to_base_b(a, b));     return 0;}
// Java program to find log(a) on// any base b using Recursionclass GFG{         // Recursive function to compute    // log a to the base b    static int log_a_to_base_b(int a, int b)    {        int rslt = (a > b - 1)? 1 + log_a_to_base_b(a / b, b): 0;        return rslt;    }         // Driver code    public static void main (String[] args)    {        int a = 3;        int b = 2;        System.out.println(log_a_to_base_b(a, b));             a = 256;        b = 4;        System.out.println(log_a_to_base_b(a, b));    }} // This code is contributed by AnkitRai01
# Python3 program to find log(a) on# any base b using Recursion # Recursive function to compute# log a to the base bdef log_a_to_base_b(a, b) :     rslt = (1 + log_a_to_base_b(a // b, b)) if (a > (b - 1)) else 0;                 return rslt;     # Driver codeif __name__ == "__main__" :     a = 3;    b = 2;    print(log_a_to_base_b(a, b));     a = 256;    b = 4;    print(log_a_to_base_b(a, b)); # This code is contributed by AnkitRai01
// C# program to find log(a) on// any base b using Recursionusing System; class GFG{         // Recursive function to compute    // log a to the base b    static int log_a_to_base_b(int a, int b)    {        int rslt = (a > b - 1)? 1 + log_a_to_base_b(a / b, b): 0;        return rslt;    }         // Driver code    public static void Main()    {        int a = 3;        int b = 2;        Console.WriteLine(log_a_to_base_b(a, b));             a = 256;        b = 4;        Console.WriteLine(log_a_to_base_b(a, b));    }} // This code is contributed by Yash_R
<script>// javascript program to find log(a) on// any base b using Recursion    // Recursive function to compute    // log a to the base b    function log_a_to_base_b(a , b)    {        var rslt = (a > b - 1) ? 1 + log_a_to_base_b(parseInt(a / b), b) : 0;        return rslt;    }     // Driver code        var a = 3;        var b = 2;        document.write(log_a_to_base_b(a, b)+"<br/>");         a = 256;        b = 4;        document.write(log_a_to_base_b(a, b)); // This code is contributed by umadevi9616</script>
1
4
 
ankthon
Yash_R
SHUBHAMSINGH10
rutvik_56
umadevi9616
subhammahato348
yousefonweb
maths-log
Mathematical
School Programming
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Find all factors of a natural number | Set 1
Check if a number is Palindrome
Program to print prime numbers from 1 to N.
Program to add two binary strings
Program to multiply two matrices
Python Dictionary
Arrays in C/C++
Reverse a string in Java
Inheritance in C++
Constructors in C++