我不理解Method isPrime结束时的“返回”值,它的值为true.
public class PrimeNumber extends ConsoleProgram{
public void run(){
int number = readInt("Enter number: ");
if(isPrime(number)){
println( number + " is prime number");
}else{
println(number + " is not a prime number");
};
}
private boolean isPrime(int n){
for(int i=2;i<n;i++){
if (n % i == 0) {
return false;
}
}
return true;
}
它在找到除法器时返回false,但我不知道为什么在循环外它返回true?
最佳答案 isPrime函数假设数字是素数.循环正在寻找反驳这一假设的反例.如果没有找到反例,则循环到达其结尾,函数返回true.
这在逻辑上称为proof by contradiction.在大多数结果都是假的情况下(例如,由于大多数数字不是素数),它被认为是一种很好的编程实践,因为它导致算法失败并返回为尽快,导致更好的性能.