使用篩法求N以內的素數,從2開始,不斷剔除2的倍數,然后從剩下的數字中,選擇最小的數3(這個數一定會是素數),然后剔除所有3的倍數,依次類推,最后剩下的數就全是素數了。
public class Prime {
// 返回n以內的素數列表
public static int[] getPrimes(int n) {
int[] a = new int[n];
for(int i = 2; i < n; i ++) {
a[i] = i;
}
// 篩法
for(int i = 2; i < n; i ++) {
if (a[i] != 0) {
for(int j = i * 2; j < n; j = j + i) {
a[j] = 0;
}
}
}
int count = 0;
for(int i = 2; i < n; i++) {
if (a[i] != 0) {
count ++;
}
}
if (count > 0) {
int[] primes = new int[count];
int j = 0;
for (int i = 2; i < n; i ++) {
if(a[i] != 0) {
primes[j] = a[i];
j ++;
}
}
return primes;
}
return null;
}
public static void main(String[] args) {
int[] a = getPrimes(10);
for (int i = 0; i < a.length; i ++) {
System.out.println(a[i]);
}
System.out.println();
}
}