整数第n个根

sin*_*ity 6 algorithm math nth-root

如果x'是最大整数,则x'是y的第n个根,使得x ^ n <= y.x,x'和y都是整数.有没有有效的方法来计算这样的第n个根?我知道这通常是由第n个根算法完成的,但这里的难点是一切都是整数,因为我正在使用嵌入式系统.

顺便说一句,我甚至尝试从1到y进行二进制搜索以识别最大x,使得x ^ n <= y,但由于x ^ n容易溢出,尤其是当n很大时,它不起作用.

Pat*_*k87 8

为最大x的给定y存储一个表,使x ^ y不溢出.使用这些值进行二分查找; 这样,只要x和n具有相同(整数)类型,就不会有溢出和整齐的算法.对?

注意:对于y> 32,对于32位整数,x的最大值为2 ...换句话说,您的表将与系统理解的整数中的位数大小相同.