Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的素数测试 public静态布尔值isPrime(整数) { 布尔结果=真; 对于(int i=2;i_Java - Fatal编程技术网

java中的素数测试 public静态布尔值isPrime(整数) { 布尔结果=真; 对于(int i=2;i

java中的素数测试 public静态布尔值isPrime(整数) { 布尔结果=真; 对于(int i=2;i,java,Java,这段代码可以工作,但我如何修改它,使其在int number=0时返回false?当前,当number=0时,返回为true 是的,这真的很简单:) public静态布尔值isPrime(整数){ 布尔结果=真; 如果(数字==0){ 返回false; } 对于(int i=2;i

这段代码可以工作,但我如何修改它,使其在int number=0时返回false?当前,当number=0时,返回为true

是的,这真的很简单:)

public静态布尔值isPrime(整数){
布尔结果=真;
如果(数字==0){
返回false;
}
对于(int i=2;i
有效的方法是:

public static boolean isPrime(int number) {
    boolean result = true;
    if (number == 0){
        return false;
    }

    for (int i = 2; i < number / 2; i++) {
        if (number % i == 0) {
            result = false;
        }
    }

    return result;
}
public静态布尔值isPrime(整数){
//小于或等于1的一切都不是素数
if(number
public静态布尔值isPrime(int number){
如果(数字<2){
返回false;
}
对于(int i=2;i
完全按照你刚才描述的做。我认为1也不是素数,顺便说一下,根据定义-你只需要循环到
sqrt(number)
而不是
number/2
,你也可以以2的增量循环。虽然这不是检查素数的真正有效的方法。谷歌搜索“埃拉托斯提尼筛”可以找到更好的方法;)@BoristheSpider如果他增加2,那么数字9将是素数。在这种情况下,循环将只计算
number=number%(number/2)
因为前面的所有内容都将被覆盖。@Vash-我不明白你想说什么:)。什么内容将被覆盖?我的意思是你不必运行到最后。你可以将return放入循环中。
public static boolean isPrime(int number) {
    boolean result = true;
    if (number == 0){
        return false;
    }

    for (int i = 2; i < number / 2; i++) {
        if (number % i == 0) {
            result = false;
        }
    }

    return result;
}
public static boolean isPrime(int number) {
    //Everything less or equal 1 is not prime number
    if (number <= 1) {
        return false;
    }

    //2 is very special case, so I check it separately
    if (number == 2) {
        return true;
    }

    //This will help me rid off all even numbers
    if (number % 2 == 0) {
        return false;
    }


    //It is important to count the sqrt before using it in for-loop condition.
    //If you use it in for-loop condition, it will be counted every single iteration.
    int square = (int) Math.sqrt(number);

    //I already checked %2, so now I need to check only odd numbers
    for (int i = 3; i <= square; i += 2) {
        if (number % i == 0) {
            //If I find one number, I do not have to continue
            return false;
        }
    }
    return true;
}
public static boolean isPrime(int number) {

    if (number < 2){
        return false;
    }

    for (int i = 2; i < number / 2; i++) {
        if (number % i == 0) {
            return false;
        }
    }

    return true;
}