我在一个旧的youtube视频上发现了这段代码,并且很难理解输出的逻辑顺序。我希望你们中的任何一个都可以帮助澄清。
假设我将值21传递给getLargestPrime方法。 在第17行中,条件语句检查是否21%2!= 0,这是正确的。因此,它进行了代码的另一次迭代。但是这次m = 3,即21%3!= 0,这实际上是错误的。为什么代码仍在执行else语句?这是第一个问题。
问题2 else内的if语句如何执行?数字何时变为== 1?
我知道这对你们来说可能是超基本的,但是由于某些原因,我无法遵循输出中的顺序。
public class LargestPrime {
public static int getLargestPrime(int number){
if(number < 0){
return -1;
}
int m = 2;
int ans = 0;
int numbern;
if(number == 1){
System.out.println("This number is not a prime");
} else{
while (ans == 0){
if(number % m !=0){
m = m +1;
System.out.println(m + " value of m");
} else {
numbern = number;
number = number / m;
if(number == 1){
System.out.println(numbern + " is the largest prime factor of your number");
ans++;
}
}
}
} return number;
}
}
这是输出:
3 value of m
4 value of m
5 value of m
6 value of m
7 value of m
7 is the largest prime factor of your number
1
答案 0 :(得分:0)
21%3!=0
返回false
。因此,jvm在else
之后执行代码。例如21%2!=0
,即true
,它在if
之后执行代码。1
与number
相同,则为m
。
这是您的计算即将结束的时候,因为您的号码之后不能再有其他号码。