为什么程序不能通过这些断言?
Why can't the program pass these assertions?
我的代码:(class 名称是数学,它实现了一个接口)
public boolean isPrime(int n){
for (int i=2; i<n; i++){
if (n%i==0){
return false;
}
}
return true;
}
需要通过的断言:
assert math.isPrime(2);
assert math.isPrime(3);
assert math.isPrime(53);
assert !math.isPrime(55);
assert !math.isPrime(24);
assert !math.isPrime(-37337);
奇怪的是,我发现通过将我的代码更改为:
,该方法将通过 -37337 断言
for (int i=2; i<n; i++){
if (!(n%i==0)){
return true;
}
}
return false;
但我似乎无法弄清楚如何通过所有断言
因为它永远不会进入循环(2大于-37337)
我的代码:(class 名称是数学,它实现了一个接口)
public boolean isPrime(int n){
for (int i=2; i<n; i++){
if (n%i==0){
return false;
}
}
return true;
}
需要通过的断言:
assert math.isPrime(2);
assert math.isPrime(3);
assert math.isPrime(53);
assert !math.isPrime(55);
assert !math.isPrime(24);
assert !math.isPrime(-37337);
奇怪的是,我发现通过将我的代码更改为:
,该方法将通过 -37337 断言for (int i=2; i<n; i++){
if (!(n%i==0)){
return true;
}
}
return false;
但我似乎无法弄清楚如何通过所有断言
因为它永远不会进入循环(2大于-37337)