I have a block of code that I've written to give me the largest prime factor of any number.
public static void main(String[] args) {
long n = 49;
while (true) {
long x = sPrimeFactor(n);
if (x < n) n /= x;
else
System.out.println(n);
}
}
public static long sPrimeFactor (long n){
if (n <= 1) return 1;
long cap = (long) Math.sqrt(n);
for (long i = 2; i <= cap; i++) {
if (n % i == 0) return i;
}
return n;
}
As you might imagine, this locks into an endless loop where the largest prime factor of the number will just keep looping through the function.
How do I break it off when my solution has been reached?
EDIT: This was me just being silly. I should have searched it up first. In any case, this was the code that solved it:
public static void main(String[] args) {
long n = (long) 49;
while (true) {
long p = sPrimeFactor(n);
if (p < n) n /= p;
if (p == n) break;
}
System.out.println(n);
}
public static long sPrimeFactor (long n){
if (n <= 1) return 1;
long cap = (long) Math.sqrt(n);
for (long i = 2; i <= cap; i++) {
if (n % i == 0) return i;
}
return n;
}