读书人

求某个数内全部的质数

发布时间: 2012-12-23 11:28:15 作者: rapoo

求某个数内所有的质数

最近发现有一个类:java.util.BitSet,挺好用的。

?

例如在求某个数下所有的质数,可以如下实现:

public static int[] listPrimesUnder(int number) {assert number > 1;int count = 0;BitSet bs = new BitSet(number);for (int i = 2; i <= number; i++) {if (bs.get(i - 1)) {continue;}count++;int t = i + i;while (t <= number) {bs.set(t - 1);t += i;}}int[] results = new int[count];count = 0;for (int i = 2; i <= number; i++) {if (!bs.get(i - 1)) {results[count++] = i;}}return results;}

?首先用bitset对象作个占位符,把非质数的数先标识出来。最后再一遍,把质数的数填充返回内容。

?

例如100以内的质数有:

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 

?

读书人网 >编程

热点推荐