先回答你的问题吧:
对于内层的循环来说,它是从2开始一直到这个数的平方根结束的,j就代表的是这些数。用i%j,就是判断该数能不能在2到它的平方根之间找到约数。如果能那么它就不是素数,所以就应该判断它的下一个数是不是素数了,这样就需要跳出内层循环(也可以继续循环下去,但这时候已经没有必要了),用的是break。如果不能,那么它就是素数。
另外,楼主你这个代码有些问题:
第一:class sushu(){}没有这种定义方法,类名后面不跟().
第二:在内层循环中for(int j=2;j<Math.sqrt(i);j++),终止条件应该设置为:j<=Math.sqrt(i).因为一个数可以是某个素数的平方,比如121 = 11 *11.那么它就不是素数。如果不加等号,你就会把它判断成素数。
代码如下:- class E1
- {
- public static void main (String []args)
- {
- int count =0;
- for(int i=101;i<200;i++)
- {
- boolean b=true;//默认时为真,如果它是素数,那么就可以执行内循环下面的if语句
- for(int j=2;j<=Math.sqrt(i);j++)
- {
- if(i%j==0)
- {
- b=false;//当它不是素数的时置为假。
- //那么就无法执行内循环下面的if语句了。
- break;//这时要加分号。
- }
-
- }
- if(b)
- {
- count++;
- System.out.println(i);//输出每一个素数。
- }
- }
- System.out.println("共有素数:"+count);
- }
- }
复制代码 |