利用數學公式求解乙個正整數的平方根

2021-09-12 18:39:27 字數 876 閱讀 8569

當大家需要在c語言程式設計中實現求解乙個數的平方根的時候,大家最容易想到的方法是載入標頭檔案,利用這個函式庫中的sqrt()函式來得出結果。

那麼有沒有可能不呼叫庫函式就能計算平方根呢?

其實我們可以運用一些數學知識,我們可以將數學的運算哦,我們可以通過程式設計計算,省去複雜的計算過程。

#include#include/*

**在不呼叫庫函式的情況下,利用數學公式計算乙個正整數的平方根

*/int main(void)

/* **計算平方根,以下迴圈必須執行至少一遍

*/ new_guess = 1;

do while( new_guess != last_guess );

/* **列印最終結果

*/ printf("\r\nsquare root of %g is %g\n", number, new_guess);

return exit_success;

}

這裡的思想是運用下列公式:

new_guess = (last_guess + number / last_guess) / 2;
其中number為數值,new_guess在不斷的迴圈過程中,逐漸逼近數值的平方根,當new_guess的值再也不變時,已達到float型別的最大表示位數,精確值就很高了。

printf("\r\nsquare root of %g is %g\n", number, new_guess);
這裡在輸出資料格式的選擇中採用了%g,原因是:

%g用來輸出實數,它根據數值的大小,自動選f格式或e格式,其中f格式也包含了十進位制格式。也就是說%g可以根據資料的型別來智慧型的達到最佳的輸出格式。

乙個數學公式求解的優化

今天學長給了一道演算法優化題讓我做了一下,感覺還是比較有意思的 題目是這樣 給定乙個長度為n的陣列i,乙個數c,按下面的公式求出給定的矩陣ii 分析 按公式求.o n c c 2 這樣固然簡單,但是如果給定n 2000,c 1000呢?利用遞推關係加速.觀察式子發現,ii k,j 和ii k 1,j...

由乙個數學公式想到的

數學往往會給我們驚喜,因為它的神奇可以揭示世界上的真理。上面的公式是排列組合學裡的乙個公式,這裡不打算討論它的推導過程或是數學意義,而是要試圖從社會學的角度來理解這個公式的現實意義。公式表徵的可以被對應到選舉制度,從r個人中選出k個人,左右兩個式子表示兩種不同的選舉方式 層級遞選制和內定式。公式的左...

由乙個數學公式想到的

數學往往會給我們驚喜,因為它的神奇可以揭示世界上的真理。上面的公式是排列組合學裡的乙個公式,這裡不打算討論它的推導過程或是數學意義,而是要試圖從社會學的角度來理解這個公式的現實意義。公式表徵的可以被對應到選舉制度,從r個人中選出k個人,左右兩個式子表示兩種不同的選舉方式 層級遞選制和內定式。公式的左...