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()(自然對數)來生成給定數字及其給定底數的結果。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP