本帖最后由 吴刚 于 2012-11-11 19:01 编辑
- public class LoopDemo {
- public static void main(String[] args) {
- for(int n = 2; n<1000; n++){
- //n: 2~<1000
- //如果n能够被 m:2~n/2 某个数整除.
- //就忽略n, 找下一个n
- int m = 2;
- boolean found = false;//1
- while(m<=n/2){
- if(n%m==0){
- found = true;//2
- break;
- }
- m++;
- }
- if(!found){//3,没有找到任何整除的情况,关键就这一句
- System.out.print(n +",");
- }
- //如果找到n就输出n
- }
- }
- }
复制代码 句3的if后面的表达式判断为真的时候才会执行方法体,但是用boolean标记这点有点迷惑,句1所有数字标记为假,句2不是质数的为真,其他为质数,那句3的表达式不是把所求的质数又标记为true了吗?另外自己修改了一下求素数的方法。感觉更好,代码如下,关于下面的代码有一个疑问,效率是不是没有上面的高?谢谢- public class LoopDemo2 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int i;
- for (i=2; i<=1000; i++){//输出1-1000的素数
- if(loop(i)){
- System.out.print(i+",");
- }
- }
- }
- public static boolean loop(int i){//判断是否为素数
- int j;
- for (j=2; j<=1000; j++){
- if(0 == i%j)
- break;
- }
- if (j == i){
- return true;
- }else{
- return false;
- }
- }
- }
复制代码 |