C++程式計算給定數字基於給定底數的對數


在幾乎所有現代程式語言中,我們都能找到一些對數函式,比如自然對數、以2為底的對數、以10為底的對數等等。但有時我們需要計算不同底數的對數,而這些對數在給定的庫函式中不可用。為了實現這個目標,我們可以使用簡單的對數公式。在本文中,我們將瞭解如何在C++中計算給定數字和給定底數的對數值。

計算給定底數的對數的公式

假設我們取一個數字x,它的底數為k,也是給定的。公式如下:

$$\mathrm{log_{k}\left ( x \right )=\frac{log_{m}\left ( x \right )}{log_{m}\left ( k \right )}}$$

其中m是任何已知的(可用的底數)

使用log10(),其中m = 10。

C++ cmath庫提供log10()方法來查詢給定數字以10為底的對數。我們可以使用相同的函式來計算以給定底數k為底的對數。使用log10()的語法如下所示:

語法

#include < cmath >
Log10( <number> )

演算法

  • 讀取兩個數字x和k

  • res := (使用log10( x )查詢x以10為底的對數) / (使用log10( k )查詢k以10為底的對數)

  • 返回res

示例

#include <iostream>
#include <cmath>
using namespace std;
float solve( int x, int k){
   float answer;
   answer = log10( x ) / log10( k );
   return answer;
}
int main(){
   cout << "Log base 8 for input x = 512 is: " << solve( 512, 8 ) <<
       endl;
   cout << "Log base 9 for input x = 59049 is: " << solve( 59049, 9 )
       << endl;
   cout << "Log base 2 for input x = 1024 is: " << solve( 1024, 2 ) <<
       endl;
   cout << "Log base 4 for input x = 256 is: " << solve( 256, 4 ) <<
       endl;
}

輸出

Log base 8 for input x = 512 is: 3
Log base 9 for input x = 59049 is: 5
Log base 2 for input x = 1024 is: 10
Log base 4 for input x = 256 is: 4

使用log2(),其中m = 2。

C++ cmath庫中的log2()方法允許使用者查詢給定數字以2為底的對數。可以使用相同的函式計算以指定底數k為底的對數。以下是使用log2()的語法:

語法

#include < cmath >
Log2( <number> )

演算法

  • 讀取兩個數字x和k

  • res := (使用log2( x )查詢x以2為底的對數) / (使用log2( k )查詢k以2為底的對數)

  • 返回res

示例

#include <iostream>
#include <cmath>
using namespace std;
float solve( int x, int k){
   float answer;
   answer = log2( x ) / log2( k );
   return answer;
}
int main(){
   cout << "Log base 8 for input x = 512 is: " << solve( 512, 8 ) <<
       endl;
   cout << "Log base 9 for input x = 59049 is: " << solve( 59049, 9 )
       << endl;
   cout << "Log base 2 for input x = 1024 is: " << solve( 1024, 2 ) <<
       endl;
   cout << "Log base 4 for input x = 256 is: " << solve( 256, 4 ) <<
       endl;
}

輸出

Log base 8 for input x = 512 is: 3
Log base 9 for input x = 59049 is: 5
Log base 2 for input x = 1024 is: 10
Log base 4 for input x = 256 is: 4

使用log(),其中m = e。

C++ cmath庫中的自然對數log()方法允許使用者查詢給定數字以‘e’為底的對數。可以使用相同的函式計算以指定底數k為底的對數。以下是使用log()的語法:

語法

#include < cmath >
log( <number> )

演算法

  • 讀取兩個數字x和k

  • res := (使用log( x )查詢x以e為底的對數) / (使用log( k )查詢k以e為底的對數)

  • 返回res

示例

#include <iostream>
#include <cmath>
using namespace std;
float solve( int x, int k){
   float answer;
   answer = log( x ) / log( k );
   return answer;
}
int main(){
   cout << "Log base 8 for input x = 512 is: " << solve( 512, 8 ) <<
       endl;
   cout << "Log base 9 for input x = 59049 is: " << solve( 59049, 9 )
       << endl;
   cout << "Log base 2 for input x = 1024 is: " << solve( 1024, 2 ) <<
       endl;
   cout << "Log base 4 for input x = 256 is: " << solve( 256, 4 ) <<
       endl;
}

輸出

Log base 8 for input x = 512 is: 3
Log base 9 for input x = 59049 is: 5
Log base 2 for input x = 1024 is: 10
Log base 4 for input x = 256 is: 4

結論

為了獲得給定底數的對數結果,可以使用簡單的對數公式,其中我們使用任何已知的底數對數方法來計算給定數字x的對數,然後將此結果除以該新底數輸入的已知值的底數對數。在本文中,我們使用了三個現有的已知對數函式,即log10()、log2()和log()(自然對數)來生成給定數字及其給定底數的結果。

更新於: 2022年12月7日

4K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告