C++程序计算给定数字的立方根
将同一个数字乘以三次称为该数字的立方,或者可以将其称为数字的三次幂。例如,3 * 3 * 3 = 27,这是一个立方数。但如果我们想执行反向操作,我们需要找到该数字的立方根。例如 $\sqrt[3]{27}$ = 3。在本文中,我们将讨论如何在 C++ 中计算给定数字的立方根。有几种不同的技术可以做到这一点。
使用cbrt()函数
cbrt() 是一个用于计算给定数字的立方根的库函数。如果该数字是完全立方数,则结果为整数;否则,它将返回浮点数。此函数只接受一个参数并返回其立方根。要使用此函数,我们必须将 cmath 库导入 C++ 程序。让我们看看此函数的语法。
语法
#include < cmath > cbrt( <cubic number> )
算法
- 将立方数 x 作为输入。
- 使用 cbrt(x) 计算 x 的立方根。
- 返回结果。
示例
#include <iostream> #include <cmath> using namespace std; float solve( int x ) { float answer; answer = cbrt( x ); return answer; } int main() { cout << "Cube root of 125 is: " << solve( 125 ) << endl; cout << "Cube root of 27 is: " << solve( 27 ) << endl; cout << "Cube root of 158 is: " << solve( 158 ) << endl; cout << "Cube root of 1000000 is: " << solve( 1000000 ) << endl; }
输出
Cube root of 125 is: 5 Cube root of 27 is: 3 Cube root of 158 is: 5.40612 Cube root of 1000000 is: 100
不使用库函数
在前面的示例中,我们已经看到了如何使用来自 cmath 库的库函数来计算数字的立方根。在本节中,我们将创建我们自己的函数来计算给定数字的立方根。算法如下所示:
算法
- 取需要计算立方根的数字,例如 x。
- start := 0。
- end := x。
- mid := (start + end) / 2。
- 当 x 与 mid3 不相同时,执行以下操作。
- mid := (start + end) / 2。
- 如果 mid3 > x,则。
i. end := mid。
- 结束if。
- 如果 mid3 < x,则。
i. start := mid。
- 结束if。
- 结束while。
- 打印 mid。
示例
#include <iostream> #include <cmath> using namespace std; float solve( int x ) { int start = 0; int end = x; float mid = ( start + end ) / 2; while ( (mid * mid * mid) != x ) { mid = ( start + end ) / 2; if ( mid * mid * mid < x ) start = mid; else if( mid * mid * mid > x) end = mid; } return mid; } int main() { cout << "Cube root of 125 is: " << solve( 125 ) << endl; cout << "Cube root of 27 is: " << solve( 27 ) << endl; cout << "Cube root of 1000000 is: " << solve( 1000000 ) << endl; }
输出
Cube root of 125 is: 5 Cube root of 27 is: 3 Cube root of 1000000 is: 100
这种方法的一个缺点是,它很容易计算完全立方数。我们可以使用适当的误差精度管理来使其也能处理浮点结果。
结论
当我们使用cmath头文件中提供的cbrt()函数时,计算数字的立方根非常简单直接。此方法只接受一个参数,即立方数,然后找到它的立方根。另一方面,如果我们希望在不使用cmath库或任何第三方库的情况下计算立方根,我们可以使用数值方法来计算相同的结果。在我们的示例中,我们使用了二分法来计算立方根。在给定的示例中,该函数仅在给定数字为完全立方数时才有效。对于立方根不是整数的任何其他数字,它可能无效。我们可以添加某些误差精度方法来处理其他非整数结果,例如立方根。
广告