alguem pode me ajudar a acelerar o seguinte processo (tinha objetivo de encontrar os primos da fatoração de um número):
BigInteger x=new BigInteger("600851475143");//valor a fatorar
int z=0;
String values="";
for(BigInteger i=new BigInteger("1");i.compareTo(x)<=0;i=i.add(BigInteger.ONE)){//gera valores de 1 ao x
System.out.println(i);
if((x.remainder(i)).compareTo(BigInteger.ZERO)==0)if(primos(i)!=0)values+=i+",";//encontra divisor real, se o divisor é primo adiciona a values
}
System.out.println("valores: "+values);
}
//verifica se é primo ,se primo retorna 1 se não 0
public static int primos(BigInteger x){
int z=0,res=0;
for(BigInteger i=new BigInteger("1");i.compareTo(x)<=0;i=i.add(BigInteger.ONE))if((x.remainder(i)).compareTo(BigInteger.ZERO)==0)z++;//adiciona o numero de divisores perfeitos para x
if (z==2)res=1;//se é divisivel por apenas 2 números(é primo:1 e ele mesmo)retorna seu valor
return res;
}
O problema é que demora muito para ele testar todos os valores demoraria cerca de 3h para ele textar o último valor, e o java é conhecido por sua eficiência e velocidade me ajudem. Como acelerar o processo ou encurtar esse trabalho?