黑马程序员技术交流社区

标题: 返回1000以内的素数 [打印本页]

作者: vincentgood    时间: 2014-4-30 23:14
标题: 返回1000以内的素数
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] + "  ");
                        }
                }
        }
}
作者: Lin0411    时间: 2014-5-1 19:02
  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:09
本帖最后由 满兴旺 于 2014-5-1 23:10 编辑
Lin0411 发表于 2014-5-1 19:02

for(int j=0; j<numList.size(); j++)
   {
               if((i%numList.get(j)) == 0)
                 {
                                        flag = false;
                 }
}
不明白,这句话是什么意思?
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数
这个算法对吗?求指教
作者: 满兴旺    时间: 2014-5-1 23:13
你想问什么???
作者: iloveyou    时间: 2014-5-1 23:32
我先看看。学习下
作者: Lin0411    时间: 2014-5-1 23:39
满兴旺 发表于 2014-5-1 23:09
for(int j=0; j

这句话的意思识货如果数i前面的质数中有一个是i的因子的话,那i就自然不是素数。
我们知道,任何一个非素数都可以表示为有限个素数的乘积,这个算法就是根据此原理写的。





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