Estou criando este tópico aki pois ja postei em todos os outro e nenhum chegou a me ajudar a resolver este problema:
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
Até onde cheguei tudo funciona perfeitamente ele esta buscando os valores primos de trás para frente assim quando ele encontrar o maior primo ele para a execução mais ele nem da sinal de execução, executa mais não envia resposta mesmo pedindo uma saída de dados.
Esta aqui o código:
import java.math.BigInteger;
public class p3 {
public static void main(String[]args){
BigInteger x=new BigInteger("600851475143");//valor a fatorar
String values="";
for(BigInteger i=x;i.compareTo(BigInteger.ONE)>=0;i=i.subtract(BigInteger.ONE)){//gera valores de x ao 1 (contagem inversa)
if((x.remainder(i)).compareTo(BigInteger.ZERO)==0)if(primos(i)!=0){
values=i.toString();
break;
}else System.out.println(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;
}
Com números menores ele funciona normalmente.Por favor me ajudem a melhorar esse desempenho o que fazer? :?