- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 41286
- 在线时间
- 小时
|
楼主 |
发表于 2021-1-6 20:09:21
|
显示全部楼层
假设存在整数u,m使得
$u^{2^m}\le x \lt (u+1)^{2^m}$,
于是很显然可以递归得出 $u^{2^{m-h}}\le "isqrt"(x,h)\lt (u+1)^{2^{m-h}}$。
所以最终得到$u\le "isqrt"(x,m)\lt u+1$,所以$"isqrt"(x,m)=u="int"("sqrt"(x,m))$
当然如果计算精度不够,双方可能会出现区别。
比如假设小数点后只有两位计算精度
那么$"sqrt"(251,3) = 251^{1/8} = 1.995...$,被计算为$2.00$
而$\sqrt{251}=15.84,\sqrt{15.84}=3.98, \sqrt{3.98}=1.99$.
所以如果在一台只有两位十进制精度的机器上,可以计算得出$"isqrt"(251,3)=2$,但是$"int"("sqrt"(251,3))=1$ |
|