日期:2014-05-20  浏览次数:20628 次

【网上看到这样一个题 但就是不明白 大神们指导下】
package com.itcast.itwork;

public class SuShu {
public static void main(String[] args) { 
for(int i=1;i<=1000;i++) {  
int m=2; 
while(m<=i) {  
if (i%m==0)   break; 
else m++;//把这一行调到如下所示的行    
if (i==m) 
System.out.println(m);    //调到这一行}   } }}
}
}
}
}
  

不知道为什么判断if (i==m)呢?

------解决方案--------------------
求素数。
while里,从m=2开始,判断当前i取余数m是否为0,为0表示除得尽,直接break;
当m==i时,说明从2到i-1这些整数,都无法被i除尽,i就是素数了。(那个println打印i比较好理解)

当然,这里的2应该也是素数的。
------解决方案--------------------
i==2 时,也输出i  那是指2也是素数
------解决方案--------------------
引用:
i==2 时,也输出i  那是指2也是素数

2不是素数?
------解决方案--------------------
如果i==m,就说明i是一个素数,在程序中就是显示该素数。