素数因子分解算法:如何让它更快?

时间:2014-01-24 00:16:41

标签: prime-factoring

我有一个程序可以找到给定数字的素因子。该算法的工作方式如下所述。

1)当n可被2整除时,打印2并将n除以2.

2)在步骤1之后,n必须是奇数。现在开始从i = 3到n的平方根的循环。当我除n时,打印i并将n除以i,将i递增2并继续。

3)如果n是素数并且大于2,则n将不会通过上述两步变为1。因此,如果它大于2,则打印n。

有没有办法让它更快?

1 个答案:

答案 0 :(得分:0)

你可以通过仅用素数而不是复合来划分它。如果它可以被复合体整除,那么你将会发现在除以复合的素因子时。例如,如果你已经确定一个数字可以被3整除(并且正确地减少了它),那么就没有必要测试数字是否可以被9整除。

此外,我不会提高测试值(在你的情况下是两个,到我的下一个素数),直到你确定你测试的值是不可被它整除的。

例证:27。当你的测试值为3时,你的算法将27除以3得到9,然后立即将测试值增加到5.它应该 left at 3,直到你将它除以的数字不再是一个因素。