黑马程序员技术交流社区

标题: 小程序:打印1~1000之间的素数 [打印本页]

作者: 黄文昭    时间: 2015-4-30 12:27
标题: 小程序:打印1~1000之间的素数
package cn.zhao01;
/*
* 打印1~1000之间的素数:
*  思路:
*  1、素数:一个大于1的自然数,除了1与其本身之外 ,不能被任何其他数整除。
*  2、返回值类型是boolean型
*  3、有一个参数,在1~1000之间,int类型
*  
* 步骤:
*    1、定义一个变量从1~1000进行循环,获得每一个自然数i
*    2、可以定义一个方法用来打印素数,定义另一个变量从2开始到i的平方根处依次整除i,
*       若能被整除,则i是合数,否则i为素数;
*    3、 打印每一个素数,并进行统计。  
*/
public class PrimePrint {
      public static void main(String[] args) {
                                   
              int count = 0;
                                    //统计素数个数
                                    for(int i=1;i<1000;i++){
                                            if(isPrime(i)){
                                                    count++;
                                                    System.out.print(i+" ");
                                                    if(count%10==0){
                                                            System.out.println();//每打印10个数, 就换行
                                                    }
                                            }
                                    }
                                    System.out.println();
                                    System.out.println("在"+1+"和"+1000+"之间共有"+count+"个素数");
                            }
                            //判断素数
                            private static boolean isPrime(int n){
                                    boolean flag = true;
                                    if(n==1)
                                      flag = false;//1既不是素数也不是合数。
                                    else{
                                            for(int i=2;i<=Math.sqrt(n);i++){
                                            if((n%i)==0 || n==1){  
                                                    flag = false;//从2开始判断n能否被其他自然数整除
                                                    break;
                                            }
                                             else
                                               flag = true;
                                      }
                                    }
                                    return flag;
                            }
            }



作者: 1017161726    时间: 2015-4-30 13:16
写的不错。这道题我也做过,但只是打印了一行,没有加换行。而且我是只在主函数中写的调用方法。其他的全部封装到方法中的。
我只是用自然数除以比他小的所有数,然后如果不存在能整除的数就是素数。没有用到Math中的方法。
作者: gan    时间: 2015-4-30 14:38
与用C语言设计的思路方法差不多
作者: 只吃饭不洗碗    时间: 2015-4-30 15:20
一到定义标记的时候,我就觉得很高级~
作者: 知来者之可追    时间: 2015-4-30 20:37
学习了。。。。

作者: 魔心邪    时间: 2015-5-1 00:44
与用C语言设计的思路方法差不多写的不错。这道题我也做过




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