演算法 01 素數和牛頓迭代法求平方根

2021-07-10 21:50:50 字數 1779 閱讀 4177

1.概念

質數(prime number)又稱素數,有無限個。除了1和它本身以外不再有其他的除數整除。根據算術基本定理,每乙個比1大的整數,要麼本身是乙個質數,要麼可以寫成一系列質數的乘積,最小的質數是2。

2.論點

在一般領域,對正整數n,如果用2到根號n之間的所有整數去除,均無法整除,則n為質數。

3.證明

如果n不能被2到根號n之間的任一整數整除,且不是質數,那麼n可以表示為:n=ab,其中ab是非1正整數。

因為n不能被2到根號n之間的任一整數整除,所以a>根號n,b>根號n,ab>根號n×根號n=n。

這跟ab=n是矛盾的,所以原來的命題得證.

4.**實現

public

static

boolean

isprime(int n)

1.概念牛頓迭代法(newton』s method)又稱為牛頓-拉夫遜方法(newton-raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。

多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。

方法使用函式f(x)的泰勒級數的前面幾項來尋找方程f(x) = 0的根。牛頓迭代法是求方程根的重要方法之一,其最大優點是在方程f(x) = 0的單根附近具有平方收斂,而且該法還可以用來求方程的重根、復根。

2.公式

3.證明

例如,我想求根號2等於多少。假如我猜測的結果為4,雖然錯的離譜,但你可以看到使用牛頓迭代法後這個值很快就趨近於根號2了:

證明過程如下:

①設曲線為f(x)=x²-a。

②求出一階導數函式為f』(x)=2x。也就是說,函式上任一點(x,f(x))處的切線斜率是2x。

③根號a實際上就是x^2-a=0的乙個正實根。

④不斷用(x,f(x))的切線來逼近這個根。設初始值為x。

⑤求出一階導數函式與x軸的交點x-f(x)/(2x),此為下乙個值x,就是乙個比x更接近的近似值。

那麼,代入f(x)=x^2-a得到x-(x^2-a)/(2x),也就是(x+a/x)/2。

4.**實現

public

static

double

sqrt(double c)

最後貼一張動態演示圖:

演算法 牛頓迭代法求平方根

q implement int sqrt int x compute and return the square root of x.a 這裡給出兩種實現方法 一是二分搜尋,二是牛頓迭代法。1.二分搜尋 對於乙個非負數n,它的平方根不會小於大於 n 2 1 謝謝 linzhi cs提醒 在 0,n ...

牛頓迭代法求平方根

sqrt 方法 public static double sqrt double c 什麼是牛頓迭代法 多數方程不存在求根公式,牛頓提出了一種用迭代來求方程近似根的方法。思路就是不斷取切線,用線性方程的根逼近非線性方程f x 0的根x 過程簡介 過點 xk,f xk 作函式的切線,切線方程是 切線與...

牛頓迭代法 求平方根

牛頓迭代法 求出根號a的近似值 首先隨便猜乙個近似值x,然後不斷令x等於x和a x的平均數,迭代個六七次後x的值就已經相當精確了。例如,我想求根號2等於多少。假如我猜測的結果為4,雖然錯的離譜,但你可以看到使用牛頓迭代法後這個值很快就趨近於根號2了 這種演算法的原理很簡單,我們僅僅是不斷用 x,f ...