Java初心者の競技プログラミング日記

Dvorak配列でjavaを書いてます

n以下のすべての素数をリストで返すメソッド

エラトステネスのふるいを用いて、n以下のすべての素数をリストアップするメソッド。

ふるい終わったあとの配列が穴だらけになって不便なので、単にそれをリストに詰め込んだだけです。

static List<Integer> primeList(int n) {
	List<Integer> list = new ArrayList<>();
	boolean[] prime = new boolean[n+1];
	Arrays.fill(prime,true);
	prime[0]=false; prime[1]=false;
	for (int i=2; i<Math.sqrt(n); i++) {
		if (!prime[i]) continue;
		for (int j=2; i*j<=n; j++) {
			prime[i*j] = false;
		}
	}
	for (int i=0; i<prime.length; i++) {
		if (prime[i]) list.add(i);
	}
	return list;
}

<参考にしたページ>
Javaで素数を求めるプログラムを実装 - にわとりプログラマーの備忘録