黑马程序员技术交流社区

标题: Java求质数发现的一个问题,同学们来解决下! [打印本页]

作者: qaws5052    时间: 2016-4-27 01:16
标题: Java求质数发现的一个问题,同学们来解决下!
本帖最后由 qaws5052 于 2016-4-27 01:19 编辑

private static void demo01() {
                //循环100以内的数
                for (int n = 1; n <= 100; n++) {
                //给b初始值true       
                boolean b = true;
                //如果循环拿到的数n不等于1,就进入下面的循环
                if (n != 1) {
                        //i从大于1的第一个数也就是2开始,依次循环到比这个数n本身小的最大的数
                        //何为质数,除了1和他本身不能再被其他数整除.所以...这样循环
                        for (int i = 2; i < n; i++) {
                                if (n % i == 0) { //如果取余为0,也就是说,除了1和其本身有其他数可以整数它,所以置为false
                                        b = false;
                                        //跳出当前循环,判断是否打印,并且到外面循环继续
                                        break;
                                }
                        }
                }
                if (b) {
                        System.out.println(n + "是质数");
                }
                /*
                 * 这段代码有疑问:
                        for (int i = 2; i < n; i++){
               if (n % i == 0){
                               b = false;
                              break;
              }
                        既然当n % i == 0 的时候就是false,即退出了for loop,
                        那么一开始i = 2的时候n % i == 0 也是成立的,
                        那么b也就为false了,但为啥最后输出结果里面还有2呢?
                 * */

                }
        }

作者: 小红花    时间: 2016-4-27 10:15
一开始符合i<n的条件么,你的i 取2的时由于你的条件限制,n取不到2
作者: dtmacg    时间: 2016-4-27 10:34
后面的过程依然继续执行
作者: qaws5052    时间: 2016-4-27 11:48
dtmacg 发表于 2016-4-27 10:34
后面的过程依然继续执行

额.能说清楚点不咯
作者: r3562939    时间: 2016-4-27 13:50
for (int i = 2; i < n; i++)
n也是2  2不小于2啊
作者: xiaoxiqq    时间: 2016-4-27 17:44
表示2<2为false 会不走循环直接走下面的代码。
作者: 狮子王    时间: 2016-4-27 22:42
top        
作者: 蜗牛爬啊爬    时间: 2016-4-27 22:58
前排 看看。跳出循环后  if(b)不包括在跳出的循环,所以后面还会执行呀
作者: dtmacg    时间: 2016-4-28 20:45
qaws5052 发表于 2016-4-27 11:48
额.能说清楚点不咯

判断2<2? 你仔细看下 下次再遇到这种问题 自己用eclipse的deBUG运行下就明白了
作者: qaws5052    时间: 2016-4-28 20:55
dtmacg 发表于 2016-4-28 20:45
判断2

deBUG 不熟
作者: qaws5052    时间: 2016-4-28 20:57
狮子王 发表于 2016-4-27 22:42
top

你也来啦?
作者: qaws5052    时间: 2016-4-28 21:09
xiaoxiqq 发表于 2016-4-27 17:44
表示2

是的!
作者: tongtian    时间: 2016-4-28 21:32
加油加油加油加油加油加油
作者: sunchuan    时间: 2016-4-28 21:42
都是大神
作者: xiaoxiqq    时间: 2016-4-29 02:31
qaws5052 发表于 2016-4-28 21:09
是的!

so.解决了吧。。
作者: wq312377167    时间: 2016-6-19 17:00
class ZhiShu
{
        public static void main(String[] args)
        {
                for(int i = 2;i < 1000;i++)
                {
                        boolean a = true;
                        for(int j = 2;j < i;j++)
                        {
                                if(i % j == 0)
                                {
                                        a = false;
                                        break;
                                }
                        }
                        if(a)
                                System.out.print(i+" ," );
                }
        }
}
作者: 一个大西瓜    时间: 2016-6-19 22:24
n是取不到2的




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