因数计算器能做什么
这款因数计算器只需输入一个整数,就能立刻给出两项结果:该数字的全部因数(约数),以及它的质因数分解。所谓因数,是指能够整除该数字、且没有余数的整数;质因数则是相乘后还原出原数字的那些质数"基石"。无论是做作业、约分分数、求最大公约数,还是探索数字的各种性质,它都是一个得力的小工具。
如何使用
这里只有一个输入框,标注为 "求以下数字的因数:"。输入任意整数(正数或负数)即可,剩下的交给计算器。它按绝对值进行计算,因此返回的因数始终为正数。支持的范围是任何小于 2,147,483,647 的整数——达到或超过这个上限的数字将不会被处理。
- 0 作为特殊情况处理,结果返回 0。
- 负数会取其绝对值(例如 -12 与 12 得到完全相同的因数)。
背后的计算原理
计算器并不会逐一检查从 1 到输入值之间的每个数字,而是只从 1 循环到该数字的平方根。对于每个能整除的数值 i,它会同时记录 i 和与之配对的商(数字 ÷ i)。这种"平方根法"成对地找出因数,对较大的数字而言速度要快得多。结果会自动去重,并按从小到大排序。至于质因数分解,则采用成熟的质数算法(Apache Commons Math)将绝对值拆解为各个质因数。
能整除关系可写作:
$$\text{Factors} = \left\{\, d \in \mathbb{Z}^{+} : \text{Number} \bmod d = 0 \,\right\}$$对于负数,则按绝对值计算:
$$\text{Factors} = \left\{\, d \in \mathbb{Z}^{+} : \left|\text{Number}\right| \bmod d = 0 \,\right\}$$
实例演示
输入 36。循环从 1 跑到 7(刚好越过 \(\sqrt{36} = 6\)):
- 1 能整除 36 → 记录 1 和 36
- 2 能整除 36 → 记录 2 和 18
- 3 能整除 36 → 记录 3 和 12
- 4 能整除 36 → 记录 4 和 9
- 6 能整除 36 → 记录 6(它的配对也是 6,因此只记一次)
排序后,因数为:1、2、3、4、6、9、12、18、36。质因数为:2、2、3、3(因为 \(2 \times 2 \times 3 \times 3 = 36\))。
常见问题
因数和质因数有什么区别? 因数是所有能整除输入数字的数;质因数则只包含相乘后能构成它的那些质数。以 36 为例,因数中包含 12、18 这样的合数,而质因数只有 2、2、3、3。
为什么负数会得到正的因数? 计算器按绝对值进行运算,所以 -12 和 12 得到的是同一组正约数。
有数值大小限制吗? 有。数字必须小于 2,147,483,647(也要大于它的负数)。达到或超过该上限的数值将不返回任何结果。