我认为你的 for 循环有点混乱。
for(int testDivide=2;testDivide<Math.sqrt(number);testDivide++){
}
不知道为什么当 testDivide 等于 sqrt(number) 时停止,当 testDivide 大于时应该停止。
同样在您的内部 for 循环内部也不正确:
if(number%testDivide!=0) {
System.out.println(number);
}
break;
基本上所有这些都会检查数字是否可以被2整除,然后打破。仅当您找到一个完全除法的数字时才需要中断 (number%testDivide==0)。也许保留一个布尔值,当你中断时设置为 true,如果该布尔值为 false,则仅在内部 for 循环完成后打印。
类似的东西:
for (int number=2; number<range; number++){
boolean found = false;
int limit = (int)Math.sqrt(number);
for (int testDivide=2; testDivide<=limit; testDivide++){
if(number%testDivide==0) {
found = true;
break;
}
}
if (!found) System.out.println(number);
}