确定 p 的第 n 个正根的程序

A program that determines the nth positive root of the p

本文关键字:程序 的第 确定      更新时间:2023-10-16

我想计算 p 的第 n 个正根,例如我们有 n=2p=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)

不确定您是专门处理整数还是什么,但这是它的伪代码。