Java版本 质数(也叫素数)算法
2009-11-19 17:20
309 查看
原文的传送门http://bbs.51js.com/viewthread.php?tid=85219
看了原文的算法,我转成java版本了
看了原文的算法,我转成java版本了
int MaxNum = 100000; // 查找 2到MaxNum 这范围内的素数 ( MaxNum 要>= 2 ). int i, j; // 计数器. int PrimeTemp [] = new int [MaxNum]; // 在这个数组做记号, 做了记号的, 全不是素数. ArrayList<Integer> result = new ArrayList <Integer>(); // 贮存素数的 数组. 因为 MaxNum >= 2, 所以第一个数组元素的值为 2 . result.add(2); double oNum = Math.ceil( Math.sqrt( MaxNum ) ); // 为什么用 开方? 看到下面2个 for 没. // 把不是素数的做 "记号". // +=2 我们整个程序都不用双数, 全用单数, 这样就快2倍了. for(i = 3; i < oNum; i += 2) { // 初始化 PrimeTemp 的数组, 数组里面当然什么都没有. if(PrimeTemp[i] == 0 ) { // i 的 j 倍一定不是素数, 但我们要 i*j 来看看是否超过了 MaxNum for( j = i; i * j <= MaxNum; j += 2) { PrimeTemp[ i*j ] = -1; // 初始化 PrimeTemp 里的元素, 现在来帮它们做一个 "记号". 因为这个元素"不是"素数. } } } // 输出素数了. // +=2 ,不要忘记, 我们不用双数的. for(i = 3; i <= MaxNum; i += 2) { // 如果是 true , 这就表明 这个没有被做 "记号" , 所以它是 素数. if(PrimeTemp[i] == 0 ) { result.add(i); } } for (int k = 0; k < result.size(); k++) { System.out.println(result.get(k)); }
相关文章推荐
- JavaScript版本 质数(也叫素数)算法
- JAVA基本算法面试题:2判断并输出素数
- Java编程算法基础---素数与筛法
- java-判断素数(质数)
- 匈牙利算法的Java版本
- 用改过的“数字进制转换”枚举字符组合,这是简化的版本。(java,算法研究)
- JAVA代码—算法基础:素数环问题
- 面试算法题:求所有的素数也就是质数
- 新浪微博短链接的生成算法(Java版本)
- 300-500内的质数(素数)个数和前10个最大的质数之和算法
- Java 打印1-100的素数(质数)
- Java_算法_求素数
- 蓝桥杯 算法提高VIP 素数求和(java)
- 一个计算质数的JAVA算法
- java版本的冒泡算法
- 求质数(素数)算法思想
- 微博短链接的生成算法(Java 版本)
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- Java入门:基础算法之检查素数
- 面试10大算法汇总(Java版本)