java 求素数的程序中有一处不理解 急求解释

publicstaticvoidmain(String[]args){//素数即质数intcount=0;for(inti=101;i<200;i+=2){boolean... public static void main(String[] args) {//素数即质数
int count = 0;

for(int i=101; i<200; i+=2) {
boolean b = false;
for(int j=2; j<=Math.sqrt(i); j++){
if(i % j == 0) {
b = false;
break;
} else {
b =true;
}
if(b == true) {
count ++;
System.out.println(i);
}
}

System.out.println( "素数个数是: " + count);
}
为什么这里第二个if从句里面的内容count ++;System.out.println(i);不能直接写在else从句 b =true; 的后面呢???
展开
 我来答
历盆郁7
2013-08-02 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:916万
展开全部

你的第二个if位置不对

        public static void main(String[] args) {
        int count = 0;

        for (int i = 101; i < 200; i += 2) {
            boolean b = true;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    b = false;
                    break;
                }
            }
            if (b) {
                count++;
                System.out.println(i);
            }
        }
        System.out.println("素数个数是: " + count);
    }

给你个我以前写过的。

public class $ {

    public static void main(String[] args) {

        int count = 0;
        for (int i = 101; i <= 200; i++) {

            if (i == 1) {
                System.out.println("1不是素数也不是合数.");
                continue;
            }

            if (check(i)) {
                System.out.println(i);
                count++;
            }
        }
        System.out.println("素数个数:" + count);
    }

    private static boolean check(int num) {

        int sqrt = (int) Math.sqrt(num);
        for (int j = 2; j < sqrt + 1; j++) {

            if (num % j == 0) {
                return false;
            }
        }
        return true;
    }
}
追问
你好  谢谢你以前的程序,这种直接调用方法的的确可以免除歧义。我写的程序第二个if前面应该是两个大括号的,提交问题的时候才发现少写了一个。现在你是否能帮我解答我之前不理解的地方呢?
追答
如果你想将
count++;
System.out.println(i);
放到else里面,

你先考虑下?第二个for是干什么的?是判断i是不是素数,从2 一直到 i的开方,在这里你count++合适么? 就算i是素数,那么count+1就可以了,所以,这两行要放到 第二个for的外面。

教你个笨的看代码的方法:用实际的数据,一行一行的走代码,每一行的变量会是什么值,都写出来,慢慢的就理解了。或者用eclipse debug一行行看也行。
试试吧
柒1989
2013-08-02 · TA获得超过236个赞
知道小有建树答主
回答量:428
采纳率:100%
帮助的人:398万
展开全部
目测是可以的。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
初来乍到2000
2013-08-02 · 超过12用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:16.7万
展开全部
可以写在后面。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式