这个计算器能做什么
这个工具可以求出一个整数的全部因数(约数),并列出它所有的因数对——也就是相乘后能得到该数的两个数的组合。所谓整数的因数,是指能将它整除、不留余数的整数。而因数对,就是相乘后等于原数的那两个因数,例如 \(6 \times 8 = 48\)。
使用方法
在输入框中填入任意一个非零整数(正数或负数皆可),然后提交。计算器会返回三项内容:该数共有多少个因数、按从小到大排列的完整因数列表,以及每一组写成 \(a \times b = n\) 形式的因数对。对于负数,结果会显示带符号的因数对,因为负数的乘积需要一个负因数搭配一个正因数。
计算原理
计算器采用试除法。设 \(n\) 为你输入的数,\(m = |n|\) 是它的绝对值。程序只需检验从 1 到 \(\left\lfloor \sqrt{m} \right\rfloor\) 范围内的候选因数 \(i\)。每当 \(m\) 除以 \(i\) 的余数为 0 时,\(i\) 和 \(\tfrac{m}{i}\) 都是因数,二者一起组成因数对 $$m \bmod i = 0 \;\Rightarrow\; i \text{ 和 } \tfrac{m}{i} \text{ 是因数}$$ $$i = 1, 2, \dots, \left\lfloor \sqrt{m} \right\rfloor$$ 只检验到 \(\sqrt{m}\) 为止能让搜索变得高效,因为每一个大于平方根的因数,都会自动与一个小于平方根的因数配成对。对于完全平方数,它的平方根只列出一次,但会显示为与自身相乘的因数对。
实例演示
以 \(n = 48\) 为例,它的平方根约为 6.93,所以我们只需检验 \(i = 1\) 到 6。我们能找到 \(1 \times 48\)、\(2 \times 24\)、\(3 \times 16\)、\(4 \times 12\) 和 \(6 \times 8\)(5 无法整除 48)。因数列表为 1、2、3、4、6、8、12、16、24、48——总共 10 个因数。
常见问题
为什么不能输入 0? 任何整数都能整除 0,因此 0 会有无穷多个因数。请改输入一个非零整数。
负数是怎么计算的? 以 -6 为例,乘积必须为负,因此每一组正因数对都会拆成两组带符号的因数对:\(-1 \times 6\)、\(1 \times -6\)、\(-2 \times 3\)、\(2 \times -3\)。
这里所说的质数是什么? 质数恰好只有两个因数:1 和它本身,例如 7 的因数为 1 和 7。