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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vincentgood 中级黑马   /  2014-4-30 23:14  /  1293 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {
        public static void  main(String[] arg){
           int[] array = new int[1001];

                for(int i = 0; i <= 1000; i++)
                {
                        array[i] = i;
                }
                for(int i = 2; i < Math.ceil(Math.sqrt(1000)); i++)
                {
                        if(array[i] != 0)
                        {
                                for(int j = i+1; j <= 1000; j++)
                                {
                                        if((array[j] != 0) && (array[j]%array[i] == 0))
                                        {
                                                array[j] = 0;
                                        }
                                }
                        }
                }
                for(int i = 0; i < array.length; i++)
                {
                        if(array[i] != 0)
                        {
                                System.out.print(array[i] + "  ");
                        }
                }
        }
}

5 个回复

倒序浏览
  1. 此解法的思想是如果一个数不能正处在它之前所有的素数则这个数为素数,用一个集合来存储素数。
  2. public class Prime
  3. {

  4.         public static void main(String[] args)        
  5.         {
  6.                 List<Integer> numList = new ArrayList<Integer>();
  7.                 numList.add(2);  //开始存入2
  8.                 for(int i=3; i<=100; i++)
  9.                 {
  10.                         boolean flag = true;  //判断是不是素数
  11.                         for(int j=0; j<numList.size(); j++)
  12.                         {
  13.                                 if((i%numList.get(j)) == 0)
  14.                                 {
  15.                                         flag = false;
  16.                                 }
  17.                         }
  18.                         if(flag)
  19.                         {
  20.                                 numList.add(i); //是,则将此数加入到集合中
  21.                         }
  22.                 }
  23.                
  24.                 System.out.println(numList);
  25.         }
  26. }
复制代码
回复 使用道具 举报
本帖最后由 满兴旺 于 2014-5-1 23:10 编辑

for(int j=0; j<numList.size(); j++)
   {
               if((i%numList.get(j)) == 0)
                 {
                                        flag = false;
                 }
}
不明白,这句话是什么意思?
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数
这个算法对吗?求指教
回复 使用道具 举报
你想问什么???
回复 使用道具 举报
我先看看。学习下
回复 使用道具 举报

这句话的意思识货如果数i前面的质数中有一个是i的因子的话,那i就自然不是素数。
我们知道,任何一个非素数都可以表示为有限个素数的乘积,这个算法就是根据此原理写的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马