黑马程序员技术交流社区

标题: 无比基础的一道题。。但是我卡主了= = [打印本页]

作者: 孙晓磊    时间: 2015-8-2 20:58
标题: 无比基础的一道题。。但是我卡主了= =
本帖最后由 孙晓磊 于 2015-8-2 21:33 编辑

01、  判断101-200之间有多少个素数,并输出所有素数。
思路自然是当除数大于1时,只能被自己整除
代码如下,注释掉的部分放出来就能跑了,但问题了,如果把两个判断条件丢一起的话,就有问题。感觉思路continue应该没用错,但是输出的是全体数字。
continue继续的应该是内循环的下一次吧,为啥能直接输出来。
  1. package Test;
  2. /*
  3. * 01、  判断101-200之间有多少个素数,并输出所有素数。?
  4. * @author SunXL
  5. * */
  6. public class Test1 {
  7.         public static void main(String[] args) {
  8.                 int i,j;
  9.                 for( i=2;i<200;i++)
  10.                 {               
  11.                         for( j=2;j<=i;j++)
  12.                         {
  13. //                                if(i%j==0)//
  14. //                                
  15. //                                if(i==j)                                
  16. //                                        System.out.println(i);                                
  17. //                                else
  18. //                                        break;
  19.                                 if(i%j==0&&i==j)
  20.                                         System.out.println(i);
  21.                                 else
  22.                                         continue;
  23.                         }
  24.                 }
  25.         }
  26. }
复制代码






作者: 薛瑞宾    时间: 2015-8-2 21:10
我昨天也做这道题了,用了一个一般的方法,扩展性不是很好,但是能求出来
作者: 孙晓磊    时间: 2015-8-2 21:19
薛瑞宾 发表于 2015-8-2 21:10
我昨天也做这道题了,用了一个一般的方法,扩展性不是很好,但是能求出来 ...

注释掉的是能解出来的办法,但是coninue那段儿死活出不来了。
作者: 孙晓磊    时间: 2015-8-2 21:33
看出来了,感觉自己一决定什么想法就陷进去出不来了
作者: 小小豪    时间: 2015-8-2 21:34
看了一下,改了一下。不知道可不可以。
  1. int i,j;
  2.                                 int conut = 0;
  3.                                 for( i=101;i<200;i++)
  4.                                 {               
  5.                                         for( j=2;j<=i;j++)
  6.                                         {
  7.                                                 if(i%j==0)
  8.                                                 {
  9.                                                 if(i!=j){break;}                                                                                        
  10.                                                 else if(i%j==0&&i==j){
  11.                                                         System.out.println("素数"+i);
  12.                                                         conut++;
  13.                                                                 }
  14.                                                 else
  15.                                                         continue;
  16.                                                 }
  17.                                         }
  18.                                 }
  19.                                 System.out.println("素数总数有"+conut+"个");
  20.                         }
  21.                 }
复制代码

作者: 薛瑞宾    时间: 2015-8-2 21:53
public class Test1 {
        public static void main(String[] args) {
                int i,j,count=0;
                for( i=2;i<200;i++)
                {               
                        for( j=2;j<=i;j++)
                        {
                             if(i%j==0)
                                                         {
                                                                if(i==j)        
                                                                 {
                                                                        if(i>=101)
                                                                         {
                                       System.out.print(i+"\t");
                                                                                count++;
                                                                                if(count%10==0)
                                                                                {
                                                                                        System.out.println();
                                                                                }
                                                                         }
                                                                 }
                                                                else
                                     break;
                                                         }
                             else if(i%j==0&&i==j)
                                                         {
                                                                        if(i>=101)
                                                                         {
                                        System.out.print(i+"\t");
                                                                                count++;
                                                                                        if(count%10==0)
                                                                                        {
                                                                                                System.out.println();
                                                                                        }
                                                                         }
                                                         }
                             else
                                  continue;
                        }
                }
                                System.out.println();
                                System.out.println("101-200之间的素数一共:"+count+"个");
        }
}

这个能完整的输出来
作者: 薛瑞宾    时间: 2015-8-2 21:55
有的那个输出语句出来了,格式的原因,懂就好
作者: 薛瑞宾    时间: 2015-8-2 22:04
恩恩,有时候都会那样,你可以用eclipse断点调试看一看
作者: 郝程序猿    时间: 2015-8-2 22:07
唉。我也郁闷,我在第二题卡了好久好久。。。
作者: 孙晓磊    时间: 2015-8-2 22:07
郝程序猿 发表于 2015-8-2 22:07
唉。我也郁闷,我在第二题卡了好久好久。。。

莫急,莫慌,发现自己是一根筋死在那儿了,出去换个心情,换个思维方式= =
作者: 郝程序猿    时间: 2015-8-2 22:28
孙晓磊 发表于 2015-8-2 22:07
莫急,莫慌,发现自己是一根筋死在那儿了,出去换个心情,换个思维方式= = ...

唉。想用递归调用,结果搞不明白弹栈的问题了,郁闷死了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2