Программа для вычисления Log n
Напишите однострочную функцию C, которая вычисляет и возвращает . Например, если n = 64, тогда ваша функция должна вернуть 6, а если n = 128, тогда ваша функция должна вернуть 7.
Using Recursion
C++
// C++ program to find log(n) using Recursion #include <iostream> using namespace std; unsigned int Log2n(unsigned int n) { return (n > 1) ? 1 + Log2n(n / 2) : 0; } // Driver code int main() { unsigned int n = 32; cout << Log2n(n); getchar (); return 0; } // This code is contributed by kirti |
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)); } } // This code is contributed by Niraj_Pandey |
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)) # This code is contributed by # Smitha Dinesh Semwal |
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)); } } // This code is contributed by // nitin mittal. |
Javascript
<script> // program to find log(n) using Recursion function Log2n( n) { return (n > 1) ? 1 + Log2n(n / 2) : 0; } n = 32; document.write( Log2n(n)); //This code is contributed by simranarora5sos </script> |
Выход :
5
Сложность времени: O (log n)
Вспомогательное пространство: O (log n), если размер стека учитывается во время рекурсии, в противном случае O (1)
Использование встроенной функции журнала
We can use the inbuilt function of the standard library which is available in the library.
C
// C program to find log(n) using Inbuilt // function of <math.h> library #include <math.h> #include <stdio.h> int main() { unsigned int n = 32; printf ( "%d" , ( int )log2(n)); return 0; } |
Java
// Java program to find log(n) using Inbuilt // function of java.util.Math library import java.util.*; class Gfg2 { public static void main(String args[]) { int n = 32 ; System.out.println(( int )(Math.log(n) / Math.log( 2 ))); } } // This code is contributed by Niraj_Pandey |
Python3
# Python3 program to find log(n) using Inbuilt # Function of math library import math if __name__ = = "__main__" : n = 32 print ( int (math.log(n, 2 ))) # This code is contributed by ukasp |
Javascript
<script> //program to find log(n) using Inbuilt // function of <math.h> library n = 32; document.write( Math.log2(n)); //This code is contributed by simranarora5sos </script> |
Выход :
5
Временная сложность: O (1)
Вспомогательное пространство: O (1)
Попробуем расширенную версию проблемы.
Напишите однострочную функцию Logn (n, r), которая возвращает .
Using Recursion
C
// C program to find log(n) on arbitrary base using Recursion #include <stdio.h> unsigned int Logn(unsigned int n, unsigned int r) { return (n > r - 1) ? 1 + Logn(n / r, r) : 0; } int main() { unsigned int n = 256; unsigned int r = 3; printf ( "%u" , Logn(n, r)); return 0; } |
Java
// Java program to find log(n) on // arbitrary base using Recursion class Gfg3 { static int Logn( int n, int r) { return (n > r - 1 ) ? 1 + Logn(n / r, r) : 0 ; } // Driver Code public static void main(String args[]) { int n = 256 ; int r = 3 ; System.out.println(Logn(n, r)); } } // This code is contributed by Niraj_Pandey |
Javascript
<script> //program to find log(n) on arbitrary base using Recursion function Logn( n, r) { return (n > r - 1) ? 1 + Logn(n / r, r) : 0; } n = 256; r = 3; document.write( Logn(n, r)); //This code is contributed by simranarora5sos </script> |
Выход :
5
Сложность времени: O (log n)
Вспомогательное пространство: O (log n), если размер стека учитывается во время рекурсии, в противном случае O (1)
Использование встроенной функции журнала
We only need to use the logarithm property to find the value of log(n) on arbitrary base r. i.e., where k can be any anything, which for standard log functions are either e or 10
C
// C program to find log(n) on arbitrary base // using log() function of maths library #include <math.h> #include <stdio.h> unsigned int Logn(unsigned int n, unsigned int r) { return log (n) / log (r); } int main() { unsigned int n = 256; unsigned int r = 3; printf ( "%u" , Logn(n, r)); return 0; } |
Java
// Java program to find log(n) on arbitrary base // using log() function of java.util.Math library import java.util.*; class Gfg4 { public static void main(String args[]) { int n = 256 ; int r = 3 ; System.out.println(( int )(Math.log(n) / Math.log(r))); } } // This code is contributed by Niraj_Pandey |
Javascript
<script> // program to find log(n) on arbitrary base // using log() function of maths library function Logn( n, r) { return Math.floor(Math.log(n) / Math.log(r)); } n = 256; r = 3; document.write( Logn(n, r)); //This code is contributed by simranarora5sos </script> |
Выход :
5
Временная сложность: O (1)
Вспомогательное пространство: O (1)
Эта статья предоставлена Шубхамом Бансалом. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью, используя write.geeksforgeeks.org, или отправить свою статью по электронной почте: deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.