shokosブログ

プログラミング

素数

エラトステネスの篩っぽいものは実は金曜日にできたのだけど、

あくまで「っぽい」なので考え中。

*********ついき************
むしろまだ未完成です

できたーと思ったら9の倍数が素数扱いされている

直そう!
************************

import java.util.HashMap;
import java.util.Map;

public class HuruiSosuu {
	public static void main(String args[]) {
		int firstNum = 2;
		int lastNum = 100;
		Boolean judge = true;
		Map<Integer, Boolean> sosuuMap = new HashMap<Integer, Boolean>();
		for (int i = firstNum; i <= lastNum; i++) {
			sosuuMap.put(i, judge);
		}
		for (int i = firstNum; i * i < lastNum && sosuuMap.get(i); i++) {
			for (int j = i + 1; j <= lastNum && sosuuMap.get(j); j++) {
				if (j % i == 0) {
					sosuuMap.put(j, false);
				}
			}
		}
		System.out.println(sosuuMap);
	}
}

wikiに載っていたような、探索リストに入れるとかそういうことはしていないので・・・

i * i < lastNum

の部分はエラトステネスの篩のアルゴリズム通りなのだけど

うーん、自信ないです。