我试图使用嵌套的循环找到1到100之间的素数,但我得到了奇怪的结果。
我认为我的代码存在问题,但我无法弄清楚究竟在哪里,有人可以帮助我吗?
我做的第一个循环将数字从2到100(i) 第二个将从2到i-1(j)的数字计数 所以,当你划分i%j!= 0时,它应该给你Prime数字我是对的吗? 非常感谢你的帮助
public static void main (String []args){
for(int i = 2; i<=100 ; i++)
{
for(int j = 2 ; j < i-1 ; j++ )
{
if (i%j != 0)
{
System.out.println(i );
}
}
}
}
答案 0 :(得分:0)
所以当你划分i%j!= 0时,它应该给你Prime数字我是对的吗?
没有。只有当所有j
的条件成立时,该数字才是素数。
答案 1 :(得分:0)
问题是这个
if (i%j != 0){
System.out.println(i );
}
}
你要说的是,对于j的每个值,测试,i和if模数余数是*不是0,打印。但是,在确定候选(i)是素数之前,必须检查循环中j的所有迭代。 *在结束素数之前必须检查的所有j值。
设置布尔标志为false(非素数),如果(i%j!= 0)则将标志更新为true,否则为false 然后在你的嵌套for之后,打印一个带有标志的if
答案 2 :(得分:0)
此测试是否不素数:
if (i%j == 0)
在这种情况下,中止进一步测试并尝试下一个数字,这可以通过几种方式实现,但对代码的最小更改是:
outer:
for (int i = 2; i<=100 ; i++) {
for (int j = 2 ; j < i-1 ; j++ ) {
if (i%j == 0) {
continue outer;
}
}
System.out.println(i);
}
代码outer:
是标签(它可以是任何名称,例如foo:
),而continue outer;
表示开始循环的下一次迭代那个标签。