在方法结束时返回java的混乱

我不理解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.在大多数结果都是假的情况下(例如,由于大多数数字不是素数),它被认为是一种很好的编程实践,因为它导致算法失败并返回为尽快,导致更好的性能.

点赞