# Program to compute log a to any base b (logb a)

• Difficulty Level : Basic
• Last Updated : 29 Sep, 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

### Using inbuilt log2 function

1. Find the log of a to the base 2 with the help of log2() method

2. Find the log of b to the base 2 with the help of log2() method

3. 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++ program to find log(a) on any base b#include 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

 // C program to find log(a) on any base b #include #include  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

 // 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

 # 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#

 // 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

## Javascript

 

Output:

1
4

Time Complexity: O(logba)

Auxiliary Space: O(1)

### Using Recursion

1. Recursively divide a by b till a is greater than b.

2. 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++ program to find log(a) on// any base b using Recursion#include 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

 // C program to find log(a) on// any base b using Recursion #include  // 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

 // 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

 # 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#

 // 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

## Javascript

 

Output

1
4


Time Complexity: O(logba)
Auxiliary Space: O(logba) Space required for recursive call stack

My Personal Notes arrow_drop_up