首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java求质数(素数)的高速算法

2012-09-05 
java求质数(素数)的快速算法public static ListInteger ListPrime(int n) {/* * false为质数,true为合数

java求质数(素数)的快速算法

public static List<Integer> ListPrime(int n) {/* * false为质数,true为合数 */boolean[] primeList = new boolean[n + 1];for (int i = 2; i <= n; i++) {if (!primeList[i]) {int j = i * i;if (j > n) // 所有合数都已被标记break;if (i > 2) {/* * 将所有能被此质数整除的奇数标记为合数 */while (j <= n) {primeList[j] = true;j = j + i + i;}} else {/* * 将所有大于2的偶数标记为合数 */while (j <= n) {primeList[j] = true;j = j + i;}}}}List<Integer> listPrime = new LinkedList<Integer>();if( n > 1 )listPrime.add(2);for (int i = 3; i <= n; i += 2) {if (!primeList[i]) {listPrime.add(i);}}System.out.println(listPrime.size());return listPrime;}

热点排行