/** * Find the largest prime factor of 317584931803. */ public long solveProblem3() { long number = 317584931803L; //long number = 13195; //long number = 168; long remainder = number; long i = 2; while (i <= remainder) { if (isPrime(i) && remainder % i == 0) { remainder = remainder / i; System.out.print(i + " * "); // a prime factor has been found and pulled out // if the remainder is prime, we have an answer if (isPrime(remainder)) { System.out.println(remainder + " = " + number); return remainder; } // reset i i = 2; } else { // keep looking i++; } } // no answer return 1; } /** * Is this number prime? */ public static boolean isPrime(long num) { boolean prime = true; int limit = (int) Math.sqrt (num); for (int i = 2; i <= limit; i++) { if (num % i == 0) { prime = false; break; } } return prime; }