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