一、基本思想
费马分解法适用于分解两个素数因子接近的奇数合数。
它基于这样一个数学事实:
$ n = a^2 - b^2 = (a+b)(a-b) $
只要我们能找到整数 $ a, b $,使得 $ n = a^2 - b^2 $,就能分解 $ n $。
二、具体步骤
- 起点:
给定一个奇数合数 $ n $。
(偶数可以直接分解出因子 2。) - 选择 $ a $:
从 $ \lceil \sqrt{n} \rceil $ 开始,因为如果 $ a^2 < n $,那么 $ b^2 $ 会是负数,不成立。
也就是说,最小的候选 $ a $ 是不小于 $ \sqrt{n} $ 的整数。 - 计算 $ b^2 $:
$ b^2 = a^2 - n $
如果 $ b^2 $ 不是完全平方数,就让 $ a = a+1 $,继续尝试。
- 得到分解:
当 $ b^2 $ 是完全平方数时,得到 $ b = \sqrt{a^2 - n} $。
然后:
$ n = (a-b)(a+b) $
就得到了分解因子。
三、举例
假设 $ n = 5959 $。
- $ \sqrt{5959} \approx 77.2 $,所以从 $ a=78 $ 开始。
- $ a=78 $:
$ b^2 = 78^2 - 5959 = 6084 - 5959 = 125 \quad (\text{不是平方数}) $
- $ a=79 $:
$ b^2 = 79^2 - 5959 = 6241 - 5959 = 282 \quad (\text{不是平方数}) $
- $ a=80 $:
$ b^2 = 6400 - 5959 = 441 = 21^2 $
找到了!
所以:
$ 5959 = (80-21)(80+21) = 59 \times 101 $