算法学习之旅
3.9算法分析学习
欧几里得算法
求最大公约数
gcd(m,n)=gcd(n,m mod n)
gcd(60,24)=gcd(24,12)=gcd(12,0)=12
Pseudo code
1 | euclid(m,n) |
Python
1 | num1=int(input("Enter the first Number:")) |
埃拉托色尼筛选法
找出不大于n的质数序列
p*p<=n //p表示仍未削去的最大数
p<=|n^(1/2)|
Pseudo code
1 |
|
Python
1 | def _int_iter():#生成器生成从3开始的无限奇数序列 |
3.11算法分析学习
牛顿迭代法求开方
可以利用一个“将长方形变得更像正方形”的思路求得A的算数平方根的迭代公式
$$
x_{k+1}=\frac{1}{2}\left ( x_{k}+\frac{A}{x_k} \right )
$$
算是通俗易懂地得到了这个迭代公式。
首先是考虑$\sqrt{A}$是面积为A
的正方形的边长,如果画一个临边不等的面积是A
的长方形,设这个长方形的长为L
,宽为A/L
,那么怎样才能让这个长方形变得更像一个正方形呢?是要把长变得短一点,宽变得长一点,可以用长和宽的平均数(L+A/L)/2
来作为新的长$L_{new}$,在面积不变的条件下,新的宽是$A/L_{new}$。这样不断操作下去,长方形的长和宽会越来越接近,就是一直趋近与$\sqrt{A}$了。
这样更新长方形长的方法
$$
L_{new}=\frac{1}{2}\left ( L+\frac{A}{L} \right )
$$
也就是求$\sqrt{A}$的迭代公式。
C语言实现
1 |
|
持续更新中。。。
- 本文作者: y0lo
- 本文链接: http://example.com/2021/03/11/算法学习/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!