一个超大的数p如何求他的n次方根k,即k^n=p,求k

一个超大的数p如何求他的n次方根k,即k^n=p,求k。
1≤n≤10^2,1≤n≤10^9,1≤k≤10^9

牛顿迭代法,可以参考一下这个

#include <stdio.h>
#include <math.h>

double nthRoot(double p, int n)
{
    double x0 = pow(p, 1.0/n); // 初始猜测值
    double x = x0; // 迭代值
    double diff = 1e-9; // 迭代停止条件,可根据实际情况调整

    while (1) {
        double fx = pow(x, n) - p; // 函数值
        double fxn = n * pow(x, n-1); // 函数导数值
        double dx = fx / fxn; // 迭代步长
        x -= dx; // 更新迭代值
        if (fabs(dx) < diff) { // 达到停止条件
            break;
        }
    }

    return x;
}

int main()
{
    double p = 123456789.0;
    int n = 3;
    double k = nthRoot(p, n);
    printf("%.9f\n", k);

    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^