だから私は今Javaコードに取り組んでいます。私はそれを完全にうまく機能させましたが、割り当てのポイントは、大きな数 (30 桁以上) を因数分解することです。それを行いますが、それを行うのに 15 分以上かかる場合があり、これは良くありません。私の教授は、私が使用しているアルゴリズムは 2^70 までの数値に対して機能し、約 5 分で処理できるはずだと保証してくれました。私はそれを行う方法を考え出そうとしています(1ではなく2ずつ増やすなど)が、いくつかの要因をスキップせずにそれをより速く動かす方法を実際に理解できないようです. 何か案は?私も楕円曲線法の方がいいと思っていたのですが、今は取り扱わないようにとのことでした。
これが私のコードです(ps、sqrtは私自身の関数ですが、動作していると確信しています):
public String factorizer(BigInteger monster){
System.out.println("monster =" + monster);
String factors = "";
BigInteger top = maths.monsterSqrt(monster);
if(monster.mod(two).equals(0));
BigInteger jump = two;
for(BigInteger bi = two; bi.compareTo(top) <= 0; bi = bi.add(jump)){
while(monster.mod(bi).equals(zero)){
factors += "+" + bi + "";
monster = monster.divide(bi);
jump = one;
}
}
if(monster.compareTo(BigInteger.ONE) == 1){
factors += "+" + monster;
}
return factors;
}