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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄小贝 高级黑马   /  2012-10-18 00:53  /  2039 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄小贝 于 2012-10-18 00:55 编辑

饭后一道题~天天好心情~

题目:判断101-200之间有多少个素数,并输出所有素数。





  1. package day2;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. /**
  5. * 判断101-200之间有多少个素数,并输出所有素数。
  6. *
  7. * @author yellowbaby
  8. *
  9. */
  10. public class Test {

  11.         public static void main(String[] args) {

  12.                 List<Integer> list = new ArrayList<Integer>();// 存放所有的素数

  13.                 for (int num = 101; num <= 200; num++) {
  14.                         isPrime(num, list);
  15.                 }
  16.                
  17.                 System.out.println(list);
  18.                 System.out.println("101-200之间素数的个数为:" + list.size());
  19.         }

  20.         /**
  21.          * 判断是否是素数,素数的概念:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  22.          */
  23.         private static void isPrime(int num, List<Integer> list) {
  24.                 for (int i = 2; i < num; i++) {
  25.                         if(num % i == 0){
  26.                                 return;
  27.                         }
  28.                 }
  29.                 list.add(num);
  30.         }

  31. }

复制代码

3 个回复

倒序浏览
我对您的代码做个小小的修改,看看这样可以吗?
我觉得您写的判断该数是否为素数的方法,返回值应为布尔型更为合理。
当返回值为true时,就把这个数添加到集合中。
以下是修改好的代码:

package day2;


import java.util.ArrayList;

import java.util.List;


/**

* 判断101-200之间有多少个素数,并输出所有素数。

*
* @author yellowbaby

*
*/

public class Test {


        public static void main(String[] args) {


                List<Integer> list = new ArrayList<Integer>();// 存放所有的素数


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

                        boolean flag=isPrime(num);
                                                if(flag){
                          list.add(num);
                                                }
                }

               
                System.out.println(list);

                System.out.println("101-200之间素数的个数为:" + list.size());

        }


        /**

         * 判断是否是素数,素数的概念:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数

         */

        private static boolean isPrime(int num) {

                boolean flag=true;
                for (int i = 2; i < num; i++) {
                        if(num % i == 0){
                               flag=false;
                                                           break;
                        }
                }
                                return flag;
        }
}
回复 使用道具 举报
本帖最后由 黄小贝 于 2012-10-18 03:12 编辑
丁旭 发表于 2012-10-18 01:04
我对您的代码做个小小的修改,看看这样可以吗?
我觉得您写的判断该数是否为素数的方法,返回值应为布尔型 ...

多谢捧场,我同意你的观点,但是从代码简洁性上来说,你的写法不是那么好~我改进了下~ 元芳,你怎么看?

  1. package day2;

  2. import java.util.ArrayList;

  3. import java.util.List;

  4. /**
  5. *
  6. * 判断101-200之间有多少个素数,并输出所有素数。
  7. *
  8. *
  9. * @author yellowbaby
  10. *
  11. *
  12. */

  13. public class Test2 {

  14.         public static void main(String[] args) {

  15.                 List<Integer> list = new ArrayList<Integer>();// 存放所有的素数

  16.                 for (int num = 101; num <= 200; num++) {
  17.                         if (isPrime(num)) {
  18.                                 list.add(num);
  19.                         }
  20.                 }

  21.                 System.out.println(list);

  22.                 System.out.println("101-200之间素数的个数为:" + list.size());

  23.         }

  24.         /**
  25.          *
  26.          * 判断是否是素数,素数的概念:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  27.          */

  28.         private static boolean isPrime(int num) {
  29.                 for (int i = 2; i < num; i++) {
  30.                         if (num % i == 0) {
  31.                                 return false;
  32.                         }
  33.                 }
  34.                 return true;
  35.         }
  36. }
复制代码
回复 使用道具 举报
呵呵,我的改动可是结构性的哦!不仅仅是代码的多少。{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马