方法java中的for循环返回和for外部循环之间的区别

时间:2019-11-04 16:44:57

标签: java

这是一个奇怪的问题,但是我很好奇,有人可以向我解释一下,这两种检查质数的相同方法有什么区别?

public boolean isPrime(int numberToCheck){

    for(int divider =2; divider<numberToCheck; divider++){
        if(numberToCheck%divider == 0){
            return false;
        }
    }

    return true;

AND

    for(int divider =2; divider<numberToCheck; divider++){
        if(numberToCheck%divider != 0){
            return true;
        }
    }

    return false;

}

当他们返回2个不同的结果时,我仍然不明白为什么,我一直认为这2个是同一件事 如果输入为1,101,11,12,200,203,5,则最上面的一个仅返回101,11,5,而另一个返回所输入的所有内容

1 个答案:

答案 0 :(得分:2)

第二部分不正确

for(int divider =2; divider<numberToCheck; divider++){
        if(numberToCheck%divider != 0){
            return true;
        }
    }

此代码将返回第一个numberToCheck满足您所不想要的divider表达式之后的if是质数(例如,如果numberToCheck为6且divider 4,然后numberToCheck%divider != 0为真)。 第一个示例是正确检查2和numberToCheck之间的所有数字,并在逻辑上返回numberToCheck不是素数(如果它可以被任何divider整除)。