什么是因数对?
一个数 N 的因数对,是指两个相乘正好等于 N 的整数组合。以 12 为例,它的因数对有 \((1 \times 12)\)、\((2 \times 6)\) 和 \((3 \times 4)\)。任何正整数都至少有一个因数对,也就是 \((1 \times N)\)。把所有因数对找全,就能完整看清这个数的约数结构——这对约分、对代数式进行因式分解,以及区分质数与合数都很有帮助。
如何使用本计算器
在“数字 (N)”输入框中填入任意正整数,然后提交即可。计算器会返回每一对互不重复的因数对、因数对的总数,以及约数的总个数。质数只会得到一个因数对 \((1 \times N)\);完全平方数则会出现两个因数相等的一对,例如 36 对应的 \((6 \times 6)\)。
计算原理详解
我们要找出所有满足 \(a \times b = N\) 的 (a, b) 组合。与其逐一检查从 1 到 N 的每个数,我们只需测试从 1 到 N 的平方根之间的候选数。只要某个 a 能整除 N,它的“搭档” \(b = N/a\) 自然也是约数,于是一步就能锁定一整对因数。正因如此,整个查找过程的时间复杂度为 \(O(\sqrt{N})\),即使面对很大的数也依然飞快。
$$\{(a,\,b)\ :\ a \times b = \text{N},\ \ 1 \le a \le \sqrt{\text{N}}\}$$
实例演算
以 \(N = 36\) 为例,它的平方根是 6。我们依次测试 \(a = 1、2、3、4、6\)(也就是 6 以内的约数):\(36 \div 1 = 36\)、\(36 \div 2 = 18\)、\(36 \div 3 = 12\)、\(36 \div 4 = 9\)、\(36 \div 6 = 6\)。这样就得到因数对 \((1 \times 36)\)、\((2 \times 18)\)、\((3 \times 12)\)、\((4 \times 9)\) 和 \((6 \times 6)\)——共 5 对因数,9 个约数。
常见问题
如果输入的是质数会怎样?你只会得到一个因数对 \((1 \times N)\),这正好印证了它是质数。
为什么完全平方数的因数对数会不一样?完全平方数会出现像 \((6 \times 6)\) 这样两个因数完全相同的一对,因此它算作一对因数对,但约数 6 在约数总数中只计一次。
这里会包含负因数吗?不会——本计算器只列出正因数对,这也是通用的约定。