Skip to content
Related Articles

Related Articles

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

View Discussion
Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 29 Sep, 2022
View Discussion
Improve Article
Save Article

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, \LARGE log_{b}\text{ } a = \frac{log\text{ }a}{log\text{ }b}
     

Below is the implementation of the above approach 
 

C++




// 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 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 <math.h>
#include <stdio.h>
 
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




<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 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 rutvik_56.
</script>

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 <iostream>
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 <stdio.h>
 
// 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




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

Output

1
4

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


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!