Java 不改变布尔值
我有一个测试一个数是否是素数的方法。我用8445测试了这个方法,它不是素数,因为它可以除以3。尽管for循环具有3,正如您在控制台中看到的,但它打印为true。println是我没有拍照的主要方法Java 不改变布尔值,java,for-loop,math,Java,For Loop,Math,我有一个测试一个数是否是素数的方法。我用8445测试了这个方法,它不是素数,因为它可以除以3。尽管for循环具有3,正如您在控制台中看到的,但它打印为true。println是我没有拍照的主要方法 public boolean Primzahlerkennen(int i) { boolean bool = true; for (int a = 2; a < i; a ++) { if (i % a == 0) bool = fa
public boolean Primzahlerkennen(int i)
{
boolean bool = true;
for (int a = 2; a < i; a ++) {
if (i % a == 0)
bool = false;
else
a++;
if (a==3){
System.out.println("here "+a);
System.out.println(8445%3);
}
}
return bool;
}
public boolean primzahlerkenen(inti)
{
布尔布尔布尔=真;
对于(int a=2;a
尽管
8445%3==0
,但为什么该值没有变为false?问题是您将a
增加两次,一次在for
语句中,一次在循环体本身中
这会导致循环跳过一些除数(其中三个是其中之一)
进一步建议:
bool
)sqrt(i)
处停止循环(找出为什么这是正确的留给读者作为练习)问题是您将
a
增加两次,一次在for
语句中,一次在循环体本身中
这会导致循环跳过一些除数(其中三个是其中之一)
进一步建议:
bool
)sqrt(i)
处停止循环(找出为什么这是正确的留给读者作为练习)请提供方法Source,不要使用图像显示您的代码!把它贴在这里。你效率低下的素数测试函数的问题是
else a++代码>零件。您已经在循环中增加了a
,再次增加将导致跳过数字。请提供方法Source不要使用图像显示您的代码!把它贴在这里。你效率低下的素数测试函数的问题是else a++代码>零件。您已经在循环中增加了a
,再次执行此操作将导致跳过数字。感谢您现在使用while循环解决了此问题,以避免两个变量。感谢您现在使用while循环解决了此问题,以避免两个变量,且此问题有效。