java求素数问题

来源:百度知道 编辑:UC知道 时间:2024/05/01 20:14:53
class Sushu
{
public static void main(String args[])
{
int i, j;
for (i = 1; i <= 100; i++)
{
for (j = 2; j < i; j++)
{
if (i % j == 0) break;
}

if (j >= i)
{
System.out.print(i);
}
}
}
}
小弟有几处不理解,1.i除以j的余数是0怎么就说明i不是素数了?
2.第二个if里,为什么j大于等于i就说明i是素数了?
3.程序执行后,为什么是1235711这样的表示,想表示成2
3
5
7.....这种如何操作?比较笨,望理解>O<

1.例如i=37,那么它除以2-37之间(也就是2到36)的任何一个数(这个数就是除数j),如果每次除以j都是有余数的,证明这个数i是素数;如果其中有可以整除也就是有余数为0的时候,说明这个数不是余数.
2.还是以i=37为例子,在执行了上面的语句之后,如果37没有整除2到37之间的如何一个数,证明这个数是素数.但是上面的程序段还是会执行j++,那么j++之后就是37,所以当除数j>=i时,就输出这个数.
3.把System.out.print(i)换成System.out.println(i)
System.out.println()这个方法是输出并换行.

1.所谓素数就是除了1和本身之外没有其他约数的数,所以当一个数能被2以上的数(除去其本身)整除时,这个数就不是素数。
2.j >= i,说明在for (j = 2; j < i; j++)语句中, 没有执行break语句跳出该循环,即小于i的数都不能整除i,故可能判断i是素数。