每日经典算法题(四) 分解质因数
分解质因数:Decomposition Quality Factor
题目
将一个正整数分解质因数。例如:输入 90,打印出:90 = 2 * 3 * 3 * 5
程序分析
若对 n 进行质因数分解,应先找到一个最小的质数 k,然后以短除法的方式继续除,除不尽再除以下一个质数。
思路
求解质因数的过程与短除法类似,都是从最小的质数(2)开始除,若除不尽则从第二个质数(3)开始除,依次循环判断,所以这里我们要用 while 循环来分解质因数。因为正整数范围内 1 不存在质因数,所以从 2 开始。
我们将质因数设定为 k,针对一个数字 n,应该有如下三种情况来对应:
(1) 如果这个质数 k 刚好等于n,则说明分解质因数的过程已经结束,打印出即可。(break 跳出循环)
(2) 如果 n > k,但 n 能被 k 整除,则质数 k 为 n 的质因数,应打印出 k 的值。并用 n 除以 k 的商,作为新的正整数 n,重复执行第一步。(打印质因数,然后重新给 n 赋值)
(3) 如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。(k++)