如何简便计算\([(\sqrt{a}+\sqrt{b})^n]\)的值?
其中a、b、n为正整数,[]为向下取整符号。 就这么算啊没有简便方法
如果真的计算机实现,可能可以试试SSE指令同时对a跟b开根 符号化,形式为 \(\left(t_0+t_1\sqrt{a}+t_2\sqrt{b}+t_3 \sqrt{a b}\right){}^q\) ;接着是二分幂算法。 展开后可写成$x\sqrt{a}+y\sqrt{b}+z\sqrt{ab}+w$形式。如果a,b事先知道,可以先算出\sqrt{a}等高精度形式 另外如果n是偶数而且$|\sqrt{a}-\sqrt{b}|\lt1$,那么结果加上这个差值的n次方是整数,可以通过高精度浮点运算解决 若论快速计算的一般方法,就是二分幂. 这里给一个纯粹高精度整数运算的方法。
不失一般性,设 $s,t$互质,$x =a_1 \sqrt{s}+a_2 \sqrt{t}+a_3 \sqrt{st}+a_4$,则对于原题,设向量的分量分别代表${a_1,a_2,a_3,a_4} $,于是$ x_0 ={1,1,0,0} $
然后再看乘法规则,$x_a$与$x_b$相乘就是:$x_a={a_1,a_2,a_3,a_4},x_b={b_1,b_2,b_3,b_4} , x_a*x_b = {a_3 b_2 t+a_2 b_3 t+a_4 b_1+a_1 b_4,a_3 b_1 s+a_1 b_3 s+a_4 b_2+a_2 b_4,a_2 b_1+a_1 b_2+a_4 b_3+a_3 b_4,a_3 b_3 s t+a_1 b_1 s+a_2 b_2 t+a_4 b_4} $
特例:$x ={a_1,a_2,a_3,a_4} $对应$ x^2= {2 a_2 a_3 t+2 a_1 a_4,2 a_1 a_3 s+2 a_2 a_4,2 a_1 a_2+2 a_3 a_4,a_3^2 s t+a_1^2 s+a_2^2 t+a_4^2} $
页:
[1]