【发布时间】:2012-07-21 13:54:15
【问题描述】:
关于如何实现分解有很多问题,但是对于生产用途,我宁愿使用开源库来立即获得高效且经过良好测试的东西。 我正在寻找的方法是这样的:
static int[] getPrimeFactors(int n)
对于 n=12,它会返回 {2,2,3}
一个库也可能有处理 long 甚至 BigInteger 类型的重载
问题不在于特定的应用程序,而在于拥有一个能够很好地处理这个问题的库。很多人认为根据数字的范围需要不同的实现,在这方面,我希望库在运行时选择最合理的方法。
高效并不是指“世界上最快的”(我不会为此在 JVM 上工作……),我只是指在一秒钟而不是一小时内处理 int 和 long range。
【问题讨论】:
-
你需要处理多大的数字?
-
因子经常被用来寻找别的东西(假设这不是你的程序所做的全部)。最有效的解决方案可能是直接找到您现在正在使用的因子。
-
@Thilo: int 的范围可以。我猜一个像样的库也会提供 long 和 BigInteger 的实现。
-
@PeterLawrey:找到质因数是一项相当普遍的任务,我不记得上次为什么需要它,无论如何,这次我需要它们来测试多项式是否是原始的. (因为可能存在一个库,但我确实想自己实现这部分)。我不太明白你的第二句话:-S
-
我的第二个陈述的意思是,可能有一种更有效的方法来实现你想要的。在您的情况下,您想确定最大公约数是否为 1。这可以作为一个单一的功能来完成。假设你有很多系数,但一个是 1,你不需要确定其他系数的所有因素。
标签: java scala math factorization