首页 文章

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

提问于
浏览
0

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

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

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

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

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

相关问题