Open in App
Not now

# 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 code int 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 code int 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 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 (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 from math import log2   def log_a_to_base_b(a, b) :     return log2(a) // log2(b);   # Driver code if __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 b int log_a_to_base_b(int a, int b) {     return (a > b - 1)             ? 1 + log_a_to_base_b(a / b, b)             : 0; }   // Driver code int 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 b int log_a_to_base_b(int a, int b) {     return (a > b - 1)                ? 1 + log_a_to_base_b(a / b, b)                : 0; }   // Driver code int 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 Recursion 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 (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 b def 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 code if __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 Recursion using 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
Related Articles