黑马程序员技术交流社区

标题: 关于求一百以内质数的三种算法详解(最简版不服来辩) [打印本页]

作者: 黑马初学者    时间: 2016-10-25 22:50
标题: 关于求一百以内质数的三种算法详解(最简版不服来辩)
/*
                 * 求1-100之间所有的质数,并将结果打印到控制台。
                        要求:6个一行。  
                        提示:最小的质数是2
                        质数: 只能被1 和 自身整数的数字
                        7: 1 2 3 4 5 6 7
                        14: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
                 */
               
                /*
                 * 思路:
                 *         1、获取到1-100之间所有的数字,但是我们知道最小的质数是2,所以循环就从2开始了。
                 *  2、获取到当前数字(i),然后依次和比它小的数字进行取模操作。
                 *    //小细节:任何数字和1都能整除,所以,这里我们从2开始进行判断
                 *  3、判断第二步的结果是否等于0
                 *          如果等于0:i不是质数
                 *          如果不等:i是质数,就打印。
                 *  4、定义变量,按照6个一行输出即可
                 */
基础版。。。。。。
int count = 0;
                a: for (int i = 2; i <= 100; i++) {
                        for (int j = 2; j < i; j++) {
                                if (i % j == 0) {
                                        //能进这里说明一件事,i不是质数
                                        continue a;
                                }
                        }
                        //如果能走到这里,说明是质数
                        System.out.print(i +  "\t");
                        count++;
                        if (count % 6 == 0) {
                                System.out.println();
                        }
                }
        }
}
旗舰版。。。。
public class Demo04_旗舰版 {
        public static void main(String[] args) {
                long start = System.currentTimeMillis();
                a: for (int i = 2,count = 0; i <= 100; i++) {
                        for (int j = 2; j < i; j++) {
                                if (i % j == 0)
                                        continue a;
                        }
                        System.out.print((count++ % 6 != 0)?(i + "\t"):((count == 1)?(i + "\t"):("\r\n" + i + "\t")));
                        //System.out.println(5>3?"大":"小");
                }
                for (int i = 0; i < 100000; i++) {
                        System.out.println(i);
                }
                long end = System.currentTimeMillis();
                System.out.println(end - start);
        }
}
豪华版。。。。。。
public class Demo04_豪华版 {
        public static void main(String[] args) {
                a: for (int i = 2,count = 0; i <= 100; i++) {
                        for (int j = 2; j < i; j++) {
                                if (i % j == 0)
                                        continue a;
                        }
                        System.out.print(i +  "\t");
                        if (++count % 6 == 0)
                                System.out.println();
                }
        }
}
java开发就是不断对程序进行最优化精简的的过程,希望大家一起努力,开发出令人满意的程序,一起加油!!!!!
作者: liujiaxing0926    时间: 2016-10-25 23:10
int count = 0;
                a: for (int i = 2; i <= 100; i++) {
                        for (int j = 2; j < i; j++) {
                                if (i % j == 0) {
                                       
                                        continue a;
                                }
                        }
                                                System.out.print(i +  "\t");
                        count++;
                        if (count % 6 == 0) {
                                System.out.println();
                        }
                }
作者: zhangpeng1991    时间: 2016-10-25 23:34
学习了

作者: 大黄蜂    时间: 2016-10-26 00:48
不错哦

作者: UZI    时间: 2016-10-26 00:51
很强,受教了~~
作者: 黑马初学者    时间: 2016-10-27 00:06
UZI 发表于 2016-10-26 00:51
很强,受教了~~

哪里。一起加油
作者: 水中鸟    时间: 2016-10-27 00:12
顶~~顶,




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