當大家需要在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個人,左右兩個式子表示兩種不同的選舉方式 層級遞選制和內定式。公式的左...