这里有详细的算法分析和源代码(本人就偷懒不写了):
http://www.52wg.org/computer/chengxu/200511/computer_99478.html补充一点:
总体思路:试商,最多只要试到N的平方根就可以了(找到一个质因数后,再用N除以质因数后的结果继续分解)。
核心——从2开始,用sqrt(N)以内的数去试商,不断重复即可得到所有的质因数
** 从2 -- sqrt(N), 一旦有可以整除的数,除数即为一个质因数,N=商,重复本步骤,如果不能被任一个数整除,N即为一个质因数,算法结束。
模拟一下过程:
例如:N=90
第一次:sqrt(N) = 9, 质因数2 ,商= 90/2 = 45;N = 45;
第二次:sqrt(N) = 6, 质因数3, 商= 45/3 = 15; N = 15;
第三次:sqrt(N) = 3, 质因数3, 商= 15/3 = 5;N = 5;
第四次:sqrt(N) = 2, 没有可整除的数,N即为质因素, 即质因数5
完毕