求X的算术平方根
求X的算術平方根
- 求X的算術平方根
- 方法一(sqrt(x))函數
- 方法二 二分查找法
- 方法三 指數對數互換
- 方法四 牛頓迭代法
- 結語
求X的算術平方根
啊,本菜狗今天又一道簡單題,結果本菜狗一如既往的只會最簡單的操作,最后看一些大佬的題解,最后整理了一下,準備記錄一下。
給定X,求其算是平方根(默認整數哈)。
如 x = 10,最后輸出 3 。
方法一(sqrt(x))函數
直接調用sqrt(x)函數即可,便可以直接運算出答案。(這也是本菜狗看到題目后第一瞬間想到的方法)
int x;cin>>x;cout<<int(sqrt(x))<<endl; 輸入:19 輸出:4這個就是直接調用函數就可以了,沒有什么好說的。
方法二 二分查找法
對從0 到 x的數進行二分查找,找出X的算術平方根。
因為我們是找的整數型,所以我們在最后返回的時候,應該是返回第一個平方大于X的數的左側。
即 假定 x=8 ,第一個平方大于x的是3,所以返回3左側的數 2。
因為8本身的平方根就是2.82843,將2.82843取整,也就得到了2。
方法三 指數對數互換
根據指數對數互換原則可以得到這個結論。
之后再根據exp函數和log函數進行求取就行。因為涉及到精度浮點的問題,所以要進行浮點比較。就可以了。
上代碼
int elog(int x){//數學版if(x==0)return 0;long long result= exp(0.5*log(x));return ((result+ 1) * (result+ 1) <= x ? result+ 1 : result); }方法四 牛頓迭代法
采用牛頓迭代法進行求根。
設函數為
進行一階泰勒展開得
帶入公式進行計算得出
即只要xn+1 與xn的差值進行收斂即可
上代碼:
結語
啊,本菜狗又是水題的一天
總結
- 上一篇: 用计算机求算术平方根的按键顺序,6.1
- 下一篇: JBOSS未授权漏洞详细复现