用Eratosthenes筛子法:

import java.util.ArrayList;
import java.util.List;/*** * @author ljs* Sieve of Eratosthenes: determine the prime numbers within the range 1....n (n>0)**/
public class Sieve {//intput: n is an positive integer (n>0)//output: a list of primes from 1 to n, as 2,3,5.... public static List<Integer> solve(int n){int[] A = new int[n+1]; //preparefor(int i=2;i<=n;i++){A[i]=i;}//sieve processint p = (int)(Math.sqrt(n));for(int i=2;i<=p;i++){//check if i is eliminated by previous stepsif(A[i] != 0){int j = i*i;while(j<=n){//eliminated the sequence:  i, i*(i+1)....A[j]=0;j += i;}          }}//collect the result into listList<Integer> primes=new ArrayList<Integer>();for(int i=2;i<=n;i++){if(A[i] != 0)primes.add(A[i]);}return primes;}public static void main(String[] args) {int n = 1000;List<Integer> primes=Sieve.solve(n);System.out.format("total number of primes from 1 to %d is: %d%n", n, primes.size());int i = 0;for(int p:primes){if(i % 10 == 0)System.out.println();System.out.format(" %4d",p);i++;}System.out.println();}
}

测试:

total number of primes from 1 to 1000 is: 168

2    3    5    7   11   13   17   19   23   29
   31   37   41   43   47   53   59   61   67   71
   73   79   83   89   97  101  103  107  109  113
  127  131  137  139  149  151  157  163  167  173
  179  181  191  193  197  199  211  223  227  229
  233  239  241  251  257  263  269  271  277  281
  283  293  307  311  313  317  331  337  347  349
  353  359  367  373  379  383  389  397  401  409
  419  421  431  433  439  443  449  457  461  463
  467  479  487  491  499  503  509  521  523  541
  547  557  563  569  571  577  587  593  599  601
  607  613  617  619  631  641  643  647  653  659
  661  673  677  683  691  701  709  719  727  733
  739  743  751  757  761  769  773  787  797  809
  811  821  823  827  829  839  853  857  859  863
  877  881  883  887  907  911  919  929  937  941
  947  953  967  971  977  983  991  997

转载于:https://www.cnblogs.com/ljsspace/archive/2011/06/05/2073359.html

经典算法(1)- 求1到N的质数相关推荐

  1. 算法:求10万以内的质数

    质数又称素数,除了1和它本身以外不再有其他因数. 这里用java语言,普通算法,直接硬求也是没问题的 import java.util.Date; import java.lang.Math;publ ...

  2. 经典算法题--求对策字符串的最大长度

    题目:输入一个字符串,输出该字符串对称子字符串的最大长度,如输入google,则输出4. 方法一:思路很中规中矩,遍历这个字符串,若有发现相邻的两个字符相等,就循环判断与这两个字符相邻的两个字符是否相 ...

  3. c语言水仙花数算法流程图,C语言经典算法例题求100-999之间的“水仙花数

    #include #include using namespace std; /* 求100-999之间的水仙花数 */ int main() { int number,hun,ten,gw,sum; ...

  4. java求最大公约数_10道java经典算法题,小白必备,每一题都能提升你的java能力...

    JAVA经典算法 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 更多java资料可以私信我领取! [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每 ...

  5. 算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间...

    算法探讨--再议经典算法问题:求最大子序列和.绝对值最大子序列和以及其区间 给定任一数字序列,如{-5,4,-20,16,-2,-3},求出其最大子序列和,绝对值最大子序列和以及对应的区间,在这个例子 ...

  6. c语言求寻找假币的次数,C语言经典算法 - 八枚银币问题

    C语言经典算法 - 八枚银币问题 说明现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或 较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币 ...

  7. java求公式例题_JAVA经典算法40题

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

  8. 经典算法——筛选法求素数(素数筛选)

    [数值问题]素数筛选 内存限制:128 MB时间限制:1.000 S 题目描述 输入一正整数n(2<=n<=5*10^6),按顺序输出2到n范围内的所有素数. 输入 输入共一行一个数,表示 ...

  9. 字节跳动经典算法题:给定一个数n如23121;给定一组数字a如[2 4 9]求由a中元素组成的小于n的最大数

    字节跳动经典算法题(提问次数最多) 题目描述:给定一个数n如23121:给定一组数字a,如[2 4 9]:求由a中元素组成的小于n的最大数. 思路分析:暴力分析手法 1. 判断该位的数值是否在数字a中 ...

  10. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

最新文章

  1. Windows 11正式版将于10月5日推出,说好的支持安卓App没上车
  2. php中的__call调用
  3. 听说你想去大厂看妹子,带你看看阿里软件测试岗四轮面试是怎么样的?
  4. RedHat 7.2配置本地yum源
  5. linux时间同修改,linux 系统时间修改同步
  6. QT学习:读写二进制文件
  7. boost::endian模块实现buffer的测试程序
  8. rxjs switchMap的实现原理
  9. study notes for python
  10. python安装不上怎么办_python依赖安装失败怎么办
  11. Zabbix添加网络设备
  12. final阶段成员贡献分
  13. 3 编程基础 Makefile
  14. 国产分布式ETL调度管理工具 TASKCTL 8.0 核心/代理节点部署
  15. QT5编译android安卓程序的sdk安装问题 android sdk manager
  16. lucas定理 与 扩展lucas定理(HDU 3037 以及 2015 ICL, Finals, Div. 1 J.Ceizenpok’s formula)
  17. Android JNI总结
  18. Muu云课堂V2 v2.2.4
  19. VMware虚拟机无网络
  20. Android动态listview,Android列表组件ListView使用详解之动态加载或修改列表数据

热门文章

  1. 安装windowx64-mysql
  2. 分布式系统关注点——如何去实施「负载均衡」?
  3. 前端每日实战:33# 视频演示如何用纯 CSS 创作牛奶文字变换效果
  4. Kotlin基础 — 扩展函数
  5. 物联网平台之争 巨头竞合并存
  6. Caused by: java.lang.ClassNotFoundException: javax.persistence.NamedStoredProcedureQuery
  7. Spark Tungsten揭秘 Day3 内存分配和管理内幕
  8. Exchange 2010 迁移至Exchange 2013系列之六:创建信任关系并安装ADMT Server
  9. Android通讯录查询篇--ContactsContract.Data 二
  10. 如何才能快速提高自己的能力?!