我有一个数组,我想知道这个数组中的素数是多少.我知道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)
你在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=4再i < number / 2 ;因为语句未能i被初始化为2 (I = 2)和i < number / 2 ; 即(2 <2) .所以for-loop不会被执行.因此,通过修改 i <= number / 2 ;该for loop执行的一个时间和if ((number % i) == 0)得到执行和isPrime = false;作品.
您必须更改内部for循环,如下所示
for (int i = 2; i <= number / 2 ; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
否则,对于4你将永远不会进入循环(4/2是2和2 < 2是false对于第一次迭代)和变量isPrime保持true.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |