如果x’是使得x ^ n <= y的最大整数,则x’是y的第n个根。x,x’和y都是整数。有没有有效的方法来计算第n个根?我知道这通常是通过第n个根算法完成的,但是这里的困难是所有事情都是整数,因为我正在使用嵌入式系统。
顺便说一句,我什至尝试对从1到y的二进制搜索来识别最大的x,以使x ^ n <= y,但是它不起作用,因为x ^ n容易溢出,尤其是当n大时。
为给定的最大x的y存储一个表,这样x ^ y不会溢出。使用这些值进行二进制搜索;这样,只要x和n具有相同(整数)类型,就不再有溢出和有效的算法。对?
注意:对于y> 32,对于32位整数,x的最大值为2 …换句话说,您的表的大小将与系统可以理解的整数位数大致相同。