📖

プログラミング自主学習 DAY73 エラトステネスの篩

2023/08/08に公開

エラトステネスの篩

1を除外したすべての自然数は素数か、素数ではないか二種類だ。
素数は、1と自分のみを約数にもっている数だ。

自然数Nまでの素数の数、どの素数があるかを簡単に得られるアルゴリズムがある。
エラトステネスの篩というアルゴリズムだ。

public class SieveofEratosthenes {
   
static boolean prime[] = new boolean[11];   
//indexとの連携のため、0も含める。 そのゆえ、N+1の大きさを設定する。
	
public static void main(String[] args) {
		
int N = 10; 
		
prime[0]=prime[1]=true;   
//prime[0] <- 0  prime[1] <-1を意味する。 0,1は定義上、素数になれないため、trueにする
		
		
//2からN^1/2回る。約数を対象であるためだ。
for(int i=2; i*i<=N; i++ ) {
//初期値がfalseであるため、すべての要素を回る。
   if(!prime[i]) {
	for(int j=i*i; j<=N; j+=i) prime[j]=true;	  
	}
 }
 
for(int i=2; i<=N; i++) {
   	if(!prime[i]) System.out.println(i);
   }

iはインデックスをマッピングするように設定したため、これにより、個数と素数をプリントすることができる。

Discussion