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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/**
* 判断101-200之间有多少个素数,并输出所有素数。
*  程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数)(sqrt(这个数)表示的是这个数的平方根),
* 如果能被整除,则表明此数不是素数,反之是素数。
*/
public class Test02 {
        public static void main(String[] args) {
                int count = 0;
                for (int i = 101; i < 201; i++) {
                        if (isPrime(i)) {
                                System.out.print(i+"\t");
                                count++;
                                if (count%5==0) {
                                        System.out.println();
                                }
                        }
                }
        }
        public static boolean isPrime(int num){
                boolean flag = true;
                for (int i = 2; i < Math.sqrt(num); i++) {
                        if (num%i!=0) {
                                flag = false;
                        } else {
                                flag = true;
                        }
                }
                return flag;
        }
}

9 个回复

倒序浏览
顶。。。。
回复 使用道具 举报
为什么是除2到sqrt(这个数)呢?
回复 使用道具 举报
不知道质数的数学证明,直接for循环2-自己就行了
  1. public static boolean isPrime(int num){
  2.                 boolean flag = true;
  3.                 for (int i = 2; i < num; i++) {
  4.                         if (num%i!=0) {
  5.                                 flag = false;
  6.                         } else {
  7.                                 flag = true;
  8.                         }
  9.                 }
  10.                 return flag;
  11.         }
复制代码
回复 使用道具 举报
点个赞~~~
回复 使用道具 举报
学习学习!
回复 使用道具 举报
drp000 发表于 2015-8-10 22:02
为什么是除2到sqrt(这个数)呢?

比如这个数是36 ,除以3和除以12都能排除这个数不是素数,所以只用到这个数的平方根就行
回复 使用道具 举报
氕氘氚 发表于 2015-8-10 22:09
不知道质数的数学证明,直接for循环2-自己就行了

这个可以啊  只是如果给你一个很大的数要你判断是否为素数,而这个数恰好是一个素数, 在判断是否是素数的时候,for循环要进行的次数是不是有点多啊
回复 使用道具 举报
Wqi 高级黑马 2015-8-11 20:03:57
9#
本帖最后由 Wqi 于 2015-8-11 20:05 编辑

Math.sqrt()的返回值是double吧。。 for (int i = 2; i <= (int)Math.sqrt((double)num); i++)
回复 使用道具 举报
Wqi 发表于 2015-8-11 20:03
Math.sqrt()的返回值是double吧。。 for (int i = 2; i

自动转型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马