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で素数を求めるプログラムを実装 - にわとりプログラマーの備忘録