private long highestPrimeFactor(long number){
		
		if (isPrime(number)){
			return number;
		}
		
		long factor = 2;
		long highestPrimeFactor = 1;
		
		while (factor <= number/factor){
			if ((number%factor==0) && isPrime(factor)){
				if (factor > highestPrimeFactor){
					if (isPrime(number/factor)){
						factor = number/factor;
					}
					highestPrimeFactor = factor;
				}
			}
			factor = factor + 1;
		}
		
		return highestPrimeFactor;
	}