Calculo sem suporte- Erro de Exacução

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? :?