素数循环问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 14:35:00
public class Helloworld
{
public static void main(String args[])
{

int i,j;
for(i=2;i<=1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j>=i)
{
System.out.println(i);
}
}
}
}

请问,为什么if(j>=i)
{
System.out.println(i);
}
J不是小于i吗,为什么大于i??????

比如
当j=i-1时
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
此段程序结束会使j+1
变为j=i
此时便是i为素数的标志 打印出来

你说得对 j只能小于i
那里改成j==i是一样的〉这个条件没用 呵呵

你的想法不对,
先说说你的想法,如果是小于的话,i=9,j=3的话。
i%j==0,由于有个break;跳出for(j=2;j<i;j++) {}循环。继续执行,if(j>=i) {System.out.println(i);}
如果按你的意思,是<的话,那么就回被打出来,9.但是9不是素数呀。所以你的想法是不对的。
在说说这代码,i=7,j=7的话,不执行forj=2;j<i;j++) {},继续执行,if(j>=i) {System.out.println(i);}。
那么7就打印出来了!呵呵

你的想法不对,j不一定小于i,j可以等于i。举个例,当i==3时,这段代码第一次循环后j变为3,这时i==j。
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
后面就输出素数了

循环没理解