C# 查找第n个根的整数部分

C# 查找第n个根的整数部分,c#,math,binary-search,biginteger,newtons-method,C#,Math,Binary Search,Biginteger,Newtons Method,我在c#(学校项目)中实现了一个大整数类,我必须计算N根。我尝试了二进制搜索,但是对于非常大的整数来说,它花费的时间太长了。我还尝试实现牛顿法。问题是我的除法函数只返回整数部分,没有数字。牛顿法要求用数字进行除法运算。我的愿望是找到一种只从n次方根中得到整数部分的方法。牛顿的方法是 N(x) = x - (x^n-a)/(n*x^(n-1))=( (n-1)*x + a/(x^(n-1)))/n 这也适用于整数运算。您可能需要通过plusminus 1更正结果 使用一个好的初始值是很重要的,因

我在c#(学校项目)中实现了一个大整数类,我必须计算N根。我尝试了二进制搜索,但是对于非常大的整数来说,它花费的时间太长了。我还尝试实现牛顿法。问题是我的除法函数只返回整数部分,没有数字。牛顿法要求用数字进行除法运算。我的愿望是找到一种只从n次方根中得到整数部分的方法。

牛顿的方法是

N(x) = x - (x^n-a)/(n*x^(n-1))=( (n-1)*x + a/(x^(n-1)))/n
这也适用于整数运算。您可能需要通过plusminus 1更正结果

使用一个好的初始值是很重要的,因为远离根的n次多项式的牛顿法的收敛是几何的。与系数(1-1/n)呈线性关系,因此对于较大的n值非常缓慢

使用基
B
,对于设置了
d
数字的整数
x
,通过截断数字序列并转换为浮点,计算
rx=x/B^(n*q)
,计算
ry=pow(rx,1.0/n)
浮点格式,并将
y=ry*B^q
转换回biginteger格式,用作第一个近似根

使用此方法时,请报告您的问题



您也可以尝试实现手动数字提取方法,如

I implemented Newton's method中所述。谢谢你的回复。