C 利用二分法求整數平方根

2021-10-24 22:13:33 字數 1740 閱讀 4416

例如求10的平方根,則在1 ~ 10間利用二分法判斷(1 + 10) / 2 = 5.5的平方是否大於或小於10,如果5.5的平方大於10,則在1 ~ 5.5之間繼續二分查詢;如果5.5的平方小於10,則在5.5 ~ 10之間繼續二分查詢;如果5.5的平方等於10,則找到10的平方根。

#include

#include

using

namespace std;

// 指定精度與迭代次數

double

sqrt

(int num,

double accuracy,

int iteration)

;// 指定精確到小數點後多少位

// 該過載函式也能實現求平方根,但是似乎由於計算機浮點計算的近似性

// 沒有上述過載函式好用,只做個人娛樂用

double

sqrt

(int num,

int accuracy)

;// 利用二分法求整數的平方根

double

sqrt

(int num)

static

bool

isreachedaccuracy

(double actual,

double refer,

double accuracy)

// 指定精度與迭代次數

double

sqrt

(int num,

double accuracy,

int iteration)

return

-1.0;}

// 浮點數相等的精度

static

const

double delta =

0.0000000000001

;// 判斷兩個浮點數是否近似相等

inline

bool

equal

(double lhs,

double rhs)

// 假設actaul=6.01,則place應為3,該函式找出6.01x,使得(6.01x)*(6.01x)<=refer

// 可採用二分法實現,為了簡單姑且採用簡單的迭代

static

double

sqrtforfractionalpart

(double actual,

double refer,

int place)

actual -

= base;

return actual;

}// 指定精確到小數點後多少位

double

sqrt

(int num,

int accuracy)

result +

= minvalue -1;

// 小數部分

二分法做平方根

注意這裡的浮點數 不然的話程式會報錯 coding utf 8 二分法計算20的平方根 import math a 0.0 多次二分後會變成二分法,所以要設定成浮點數,python裡就是直接賦值成浮點數 b c float raw input enter a number n 100 while t...

二分法求平方根(Python實現)

使用二分法 bisection method 求平方根。1 defsqrtbi x,epsilon 2assert x 0,x must be non nagtive,not str x 3assert epsilon 0,epsilon must be postive,not str epsilo...

Python用二分法求平方根

好了,正如標題所示,我們今天要用二分法來求平方根。首先要有數字,但是老是有人寫字串該怎麼辦呢?老是有人在寫數學題的時候打字串 try x int input please enter a whole number to measure to square root except print 然後是重...