java 简单问题请教

来源:百度知道 编辑:UC知道 时间:2024/04/28 20:50:23
public class e4 {
public static void main(String args[])
{
int i,j;
for (j=2;j<=100;j++)
{
for (i=2;i<=j/2;i++)
{
if(j%i==0)
break;
}
if(i>j/2)
{
System.out.println("素数有"+j);
}
}
}

}
================
请帮我解释下这段代码的含义
尤其是 for的循环的怎么得的

这个,还是拿分走人吧.实在不知道解释那里,感觉这代码已经很明显了,一看就明白了.不过这代码存在错误和不合理性.
1.效率上不对.内循环不应该是i<=j/2,只需要i<Math.sqrt(j)+1即可.
2.运行的结果会是:
素数有2
素数有3
素数有5
......
你可以试试看能不能改成合理点的.

是求100以内的素数(也就是质数)
for循环内:1不是素数,所以从2开始,第二个for循环是i从2一直比到j/2(因为没必要比到j),if的意思是j与i求余,如果等于0肯定不是了。最后一个if是i与j比较后得出素数。

这是一个嵌套循环
1。 目的是找出2到100之间的素数
2。 意思是外面的for循环 循环j次 里面的一个循环要循环j/2 次
比如当j=10时 i等于5 就是让j/i五次 取模 让10分别与2到5之间的数字取模 当模等于0时 当然j就不是素数了 break跳出循环体 继续下次循环

其实这个代码本身有点错误

就是求100内的所有素数

外循环控制循环次数
内循环判断: 当前数是否至少能被2整除,是则跳出内循环