package algoritmos;

import ialgoritmos.IFatoracao;

public class Fermat implements IFatoracao {
	long numero;
	
	public Fermat(long n){
		this.numero = n;
	}
	
	public String fatora(){
		String retorno = "";
		long i =0;
		retorno = retorno + "------------FERMAT----------------</br>";
		long a = (long)Math.floor(Math.sqrt(numero));
		if (numero == Math.pow(a, 2) ){
			retorno = retorno + "a = "+ a +"é um fator de "+ numero + "</br>";
			
		} else
			for (i = a+1; i < (numero + 1)/2; i++) {
				long k = 1;
				double teste = Math.sqrt(Math.pow(i, 2)- numero);
				if (teste % 2 == 0 || teste % 2 ==1){
					//retorno = retorno + i +" "+" " + teste + " " + (i - a)+" ITERAÇÕES </br>";  
					
					retorno = retorno + (i+teste) +", "+ (i-teste)+" são fatores de "+ numero + "</br>";
					
					break;
				}else{
					
				}
				
			}
		if (i == (numero + 1)/2){
			retorno = retorno + numero + " é primo!</br>";
			
		}
		retorno = retorno + "----------------------------------";
		
		return retorno;
	}

	public double getNumero() {
		return numero;
	}

	public void setNumero(long numero) {
		this.numero = numero;
	}

}
