A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈从宾 中级黑马   /  2012-3-21 18:48  /  1933 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。

public class Test_2 {
    public static void main(String[] args) {

        // TODO 自动生成方法存根

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

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

                if(i%j==0)break;

                if(j>=Math.sqrt(i)-1)

                    System.out.println(i);

            }

        }

    }

}
哪位给解释一下为什么是“用一个数分别去除2到sqrt(这个数)”而不是“用一个数分别去除2到200”?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

4 个回复

倒序浏览
因为一个数分解为两个数相乘,这两个数中必然有一个数<=sqrt(这个数),所以如果这个数有大于sqrt(这个数)的因数,那它就必然对应有个小于sqrt(这个数)的因数
选择在2到sqrt(这个数),可以减少循环次数

点评

谢谢您,明白了,希望老师给您加技术分···  发表于 2012-3-21 19:12

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘元明 发表于 2012-3-21 19:07
因为一个数分解为两个数相乘,这两个数中必然有一个数

呵呵,对于技术分它应该是学习的附属品,只要能够相互学习,相互交流,相信我们都能很快进黑马的,加油!
回复 使用道具 举报
刘元明 发表于 2012-3-21 19:16
呵呵,对于技术分它应该是学习的附属品,只要能够相互学习,相互交流,相信我们都能很快进黑马的,加油! ...

对啊对啊····不要把手段当成自己的目标,学习才是我们的目标,一起加油·!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马