我们不允许对书籍、工具、软件库等寻求建议的问题。您可以编辑问题,以便用事实和引文来回答。
我正在寻找用于快速素性测试和大数因式分解的Java API。任何指针都会对我很有帮助。
我找到的资源有:
我期待着一个API使用椭圆曲线分解或二次筛。
另一个资源:使用椭圆曲线方法的因式分解。
限制:10000位数字。
我使用了用Java实现的Eratosthenes算法的筛选
public static ArrayList<Integer> primeNumbers(int end) {
// generate array of number from 2 to end
// generate flag array of same size
// this numbers are inclusive
int eff = 0;
ArrayList<Integer> factors = new ArrayList<Integer>();
if (end < 2) {
return factors;
}
if (end == 2) {
factors.add(2);
return factors;
}
int numbers[] = new int[end - 1];
boolean flags[] = new boolean[end - 1];
int count = 2;
// lets reset all numbers
for (int i = 0; i < end - 1; i++) {
numbers[i] = count;
flags[i] = true;
count++;
}
for (int i = 0; i < end - 1; i++) {
if (flags[i]) {
factors.add(numbers[i]);
int loop = 2;
for (long j = numbers[i] * loop; j <= end; j = numbers[i]
* loop, loop++) {
flags[(int) (j - 2)] = false;
eff++;
}
}
}
// System.out.println(eff);
return factors;
}
我建议用普通数学。您可以在这里找到lib here API。你会感兴趣的课程是素数。
我已经在Stack上看到了这个问题,但是我找不到任何具体的答案,或者至少我能理解的答案。所以这是我的问题: 如何并行化一个大数的因式分解? 我见过这样的回答:“…他只需要为找到的每个因素生成一个新线程,然后用某种同步对象来收集所有的因素” 但是我不太明白这是怎么做到的。有人能用例子解释一下吗?
这个问题似乎与帮助中心定义的范围内的编程无关。 我正在尝试计算软最大激活函数的导数。我发现了这个:https://math.stackexchange.com/questions/945871/derivative-of-softmax-loss-function 似乎没有人给出我们如何得到i=j和i!= j的答案的正确推导。有人可以解释一下吗!当涉及求和时,我对导数感到困惑,就像在softmax
问题内容: 我想找到小于10 ^ 12的大数的质分解。我得到了以下代码(在Java中): 首先,上述算法的复杂性是什么?我很难找到它。 而且对于大量的素数来说太慢了。 有没有更好的算法,否则如何优化这种算法? 问题答案: 如果您想分解 许多 大数,那么最好先找到质数最大(例如使用Eratosthenes的Sieve)。然后,您只需要检查那些质数是否是因数,而不是全部测试。
问题内容: 我正在尝试实现一个函数,该函数将正整数作为输入并返回包含的素数分解中所有数字的列表。 我已经走了这么远,但我认为最好在这里使用递归,不确定如何在这里创建递归代码,基本情况是什么?首先。 我的代码: 问题答案: 一个简单的审判部门: 具有复杂性(最坏的情况)。您可以通过特殊情况2并仅在奇数上循环(或特殊情况下将更多小质数并在可能的除数上循环)来轻松改进它。
本文向大家介绍java编程实现求质数与因式分解代码分享,包括了java编程实现求质数与因式分解代码分享的使用技巧和注意事项,需要的朋友参考一下 1、求解质数 1.1说明 首先,我们来了解这样一个概念,那就是什么叫做质数?质数:一个数如果只能被1和它自己整除,这样的数被称为质数,与之对应的,称为和数。基于这样的一个概念,我们可以很快想到一个方法,就是从1开始,不断试探,看从1到它自己,是否有数字能够
问题内容: 我正在研究用Java实现的素数分解程序。目的是找到最大的素因600851475143(项目Euler问题3)。我想我已经完成了大部分工作,但是却遇到了一些错误。而且我的逻辑似乎不对,特别是我为检查数字是否为质数而设置的方法。 编辑 问题答案: 为什么要这么复杂?您 不需要 像 isPrime() 这样的事情。除以最小除数(素数),然后从素数开始循环。这是我的简单代码: