新手請教一下各位前輩!
這是我用來找Largest Prime的程式碼
根據下面的程式碼 正常來說 看條件會形成無限循環
但為什麼還可以return 得到 number?
public class LargestPrime {
public static int getLargestPrime(int number) {
if (number <= 1) {
return -1;
}
for (int i = 2; i < number; i++) {
if (number% i == 0) {
number = number/i;
i--;
}
}
return number;
}
}
假如輸入21 :
//Main class
System.out.println(LargestPrime.getLargestPrime(21));
Output : 7
輸入 21 後
第一次回圈:
21 除以 2,餘數是 1
第二次回圈:
21 除以 3,餘數是 0,number=21/3=7,i=2
第三次回圈:
7 除以 2,餘數是 1
第四次回圈:
7 除以 3,餘數是 1
第五次回圈:
7 除以 4,餘數是 3
第六次回圈:
7 除以 5,餘數是 2
第七次回圈:
7 除以 6,餘數是 1
結束!跳出回圈輸出 number = 7
number 是會變動的。以你輸入 21 為例,在第二次回圈時
number 就變成 7 了。
所以可以正常輸出 7。