关于打印100-200之间的所有素数,求解答,急!!

图片说明
这里面的boolean b=false和下面的b=true之间的关系,我搞不明白,哪位大神能帮忙解决下,为什么boolean b=false,然后我换成true,下面的换成false就打印不出素数了,为什么?

前面,b=false表示它默认不是合数(合数就是不是素数的数)
循环里,只要任意非本身和1能够被整除,那么这个数就是合数

最后如果是非合数(素数)就输出

把if(!b),的!去掉,又可以了

前边声明boolean b = true/false就是给这个布尔变量设置一个初始值,关键是看经过第二层的for循环,b的值有没有发生变化,
如果没有发生变化,就说明是素数。
假设b的初始值是fasle,经过第二层for循环以后,b的值依然为false,说明才是素数,所以要判断if(!b),
假设b的初始值是true,经过第二层for循环以后,b的值依然为true,说明才是素数,所以要判断if(b)

http://blog.csdn.net/weixin_36380516/article/details/65937748

参考

boolean b=false,然后我换成true,下面的换成false就打印不出素数了,为什么?
因为你下面也要改 if(b) 则输出

这里的b是一个判断标志,如果当前数能被比它小的数整除就true,经过!b为false所以if不执行,说明当前数不是素数(因为会被其他数整除)
false换成true不行的原因应该if判断中!b,将if中的!b改b即可

if()里的默认值是false,所以换值时你把!b改成b即可

b其实就是一个标志位,标志是否为合数。你要输出质数,就是!b。 反之,若你的b 标识是否为质数,输出的话 就得改成b 了。
此外,给点意见。第二层循环,j 的大小直接判 是否小于 i的开方 就好,不用到 i-1。这样会减少 循环次数。
同时,一旦b=true(表示当前的i 为合数),直接可以跳出当前循环,直接开始下轮的i 循环了。
个人觉得这样都会减少一些循环的次数。

应该是if(b) {System.out.println(i);} 只有在标志位为true的时候打印素数