为什么4打印为素数

Rob*_*der 1 java

我有一个数组,我想知道这个数组中的素数是多少.我知道4号不是"素数",但它仍然给我打了4号我错过了什么?我知道我不能添加第二个if:"if(isPrime && number!= 4)但我只是想了解我的代码有什么问题以及为什么编号4打印谢谢

    int numbe []= {1,2,3,4,5,6,7,8,9,10};

    System.out.println("Prime Numbers are:");
    for(int number : numbe)
    {
        boolean isPrime =true;
        for (int i = 2; i < number / 2 ; i++)
        {
            if ((number % i) == 0)
            {
                isPrime = false;
                break;
            }
        }
        if (isPrime)
            System.out.println("Prime Number: " + number);
    }
Run Code Online (Sandbox Code Playgroud)

ano*_*knr 5

你在for循环中 犯了错误for (int i = 2; i < number / 2 ; i++).

你的for-loop应该是: -

    for (int i = 2; i <= number / 2 ; i++){

      // Your for-loop content.

    }
Run Code Online (Sandbox Code Playgroud)

在程序中,当n=4i < number / 2 ;因为语句未能i被初始化为2 (I = 2)i < number / 2 ; 即(2 <2) .所以for-loop不会被执行.因此,通过修改 i <= number / 2 ;for loop执行的一个时间和if ((number % i) == 0)得到执行和isPrime = false;作品.

  • 为什么?你能解释为什么这解决了这个问题吗?详细说明答案. (2认同)

Dav*_*INO 5

您必须更改内部for循环,如下所示

    for (int i = 2; i <= number / 2 ; i++) {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

否则,对于4你将永远不会进入循环(4/222 < 2false对于第一次迭代)和变量isPrime保持true.