确定 p 的第 n 个正根的程序
A program that determines the nth positive root of the p
我想计算 p 的第 n 个正根,例如我们有 n=2 和 p=16,答案是 4,因为
4^2 = 16。我想对大数(1 <= n <= 200,1 <<strong>= p <10^101)这样做。我不知道我应该如何尽快做到这一点。
例:
n=2 p=16 Answer 4
n=7 p=4357186184021382204544 Answer 1234
如果你
必须提出自己的算法,那里有任意精度的数学包。但你可以试试这个:以任何方式将p变成双精度(双精度可以处理10^101。 然后使用 math.h::p ow(p, 1.0/n),这个答案将接近正确的整数(四舍五入?)。 但是,如果 p 超过 15 位,并且 n 太小,例如,p = 10^100,n=2 给出 50 位的答案,这对于双精度来说太大而无法准确表示,这将失败。
将 101 位 p 分成双倍:将数字(字符串)切成 10 位数字块,将每个块乘以 10 到适当的幂,然后将它们相加。
尝试牛
顿的方法,如下所述:http://en.wikipedia.org/wiki/Nth_root_algorithm
取 p 的对数,除以 n,取反对数:
nthRoot(p, n) := Math.Power(10, Math.Log(p) / n)
不确定您是专门处理整数还是什么,但这是它的伪代码。
相关文章:
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 基于boost的程序的静态链接——zlib问题
- 最高有效数字侧的第N位
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 程序在执行程序的其余部分之前退出
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 在我的第一个C++程序中需要一些帮助(简单)
- 用于计算不包含给定数字的第n个数字的程序
- 无法在Windows 10上使用Kaa教程运行程序-"您的第一个Kaa应用程序"
- 即使将返回 0 作为 main 的第一行,程序也无法退出C++
- 确定 p 的第 n 个正根的程序
- 编译我的第一个c++程序时遇到问题
- 编译我的第一个C++程序时遇到问题
- C++Visual Studio 2008 Express Edition中的第1个程序
- 问题与我的第一个CPP程序-头和源
- 我的第一个c++程序
- 为什么我的程序读取的不仅仅是我的txt文件的第一行?
- 无法在visual c++ 2010中运行我的第一个Win32应用程序