我创建此循环以查找素数,<table class="result" border="1">
<tr>
<td>Row</td>
<td>Name</td>
<td>Description</td>
</tr>
</table>
初始化为0,但调试器总是跳过1 (这是正确的)和2 (这是< strong>不正确)。
如何始终跳过int num
?
2 % 2 == 0
答案 0 :(得分:0)
您的代码存在的问题是,在num = 2的情况下,您不会进入添加素数的部分。您选择使用内部循环的最后一次迭代作为向列表添加素数的位置,但是对于num = 2,内部循环具有0次迭代。
我会按如下方式修改你的程序:
package test;
import java.util.ArrayList;
import java.util.List;
public class Test {
private static boolean isPrime(int num) {
for (int j = 2; j < num; j++) {
if (num % j == 0) {
return false;
}
}
return true;
}
public static void main (String [] args) {
List<Integer> myPrimeNumbers = new ArrayList<>();
for (int num = 2; num <= 100; num++) {
if (isPrime(num)) {
System.out.println("PRIME NUMBER FOUND! It's: " + num + ".");
myPrimeNumbers.add(num);
}
}
}
}
将素数测试提取到方法中可以轻松地将true
和false
返回放置在直观正确的位置。
我用2而不是0开始素数搜索,因为我们都知道0和1根据定义没有素数。