我正在尝试编写一个程序,以找到一个非常大的最大素数因子,并尝试了几种不同的成功方法.到目前为止我发现的所有这些都令人难以置信地缓慢.我有一个想法,我想知道这是否是一个有效的方法:
long number = input;
while(notPrime(number))
{
number = number / getLowestDivisiblePrimeNumber();
}
return number;
Run Code Online (Sandbox Code Playgroud)
这种方法需要输入,并将执行以下操作:
200 - > 100 - > 50 - > 25 - > 5(返回)
90 - > 45 - > 15 - > 5(返回)
它将currentNum重复除以最小的可分数(最常见的是2或3),直到currentNum本身为素数(没有可分的素数小于currentNum的平方根),并假设这是原始输入的最大素数因子.
这会一直有效吗?如果没有,有人可以给我一个反例吗?
-
编辑:非常大,我的意思是大约2 ^ 40,或10 ^ 11.
Sam*_*ell 22
该方法可行,但速度很慢."你的数字有多大?" 确定使用方法:
Mar*_*ers 16
由于Unique Prime Factorization定理,这将始终有效.
| 归档时间: |
|
| 查看次数: |
6786 次 |
| 最近记录: |