【记忆用】算法常用数学公式/方法
(2022.11.7)最近开始写些算法题了,发现有很多算法中常用数学公式我给忘了,因此我决定专门开这样一篇文章来记忆我认为比较常用的数学公式及方法。
随缘更新中~_( '-' _)⌒)_
圆周率的计算
-
编程语言中通过反正切函数:
\[\pi = \arctan{1}\times 4 \]因为:
\[\arctan{1} = \frac{\pi}{4} \]C++示例:
#include <cstdio> #include <cmath> using namespace std; int main() { double PI = atan(1.0) * 4; printf("%.8lf", PI); return 0; }
质数(素数)的判断
程序思路
素数指的是某个除了1和它自身,没有其他因数的正整数。
比如要判断正整数number是否是素数:
尝试用:
\[\left [ 2, \sqrt{number}\right ]
\]
这个范围内的每个数来除number,只要找到了一个可以整除number的数,number就不是素数(质数)。
原理
为什么右闭区间是 \(\sqrt{number}\) 捏?
假如有如下一式成立(a,b,x均为正整数):
\[a \times b = x
\]
可以看到a和b是x的因数。
接下来将式两边同时除以 \(b \times \sqrt{x}\) :
\[\frac{a}{\sqrt{x}} = \frac {\sqrt{x}} {b}
\]
-
如果 \(a \le \sqrt{x}\) ,要使得等式成立则必有 \(b \ge \sqrt{x}\)
-
如果 \(b \le \sqrt{x}\) ,要使得等式成立则必有 \(a \ge \sqrt{x}\)
可以发现,只要x能被分解为两个因数a×b的形式,那么至少有一个因数是 \(\le \sqrt{x}\) 的。
因此如果一个数x不是素数,那么在 \(\left [ 2, \sqrt{x}\right ]\) 范围内肯定有其一个因数。
实战
...to be updated

浙公网安备 33010602011771号