1.欧拉算法求100以内素数个数
class test { private static boolean[] check = new boolean[101];//这里定100会有越界错误 private static int[] primeList = new int[101]; private static void euler(int num) { int count = 0; for (int i = 2; i <= num; i++) { if (!check[i]) { primeList[count++] = i; } for (int j = 0; j < count && i * primeList[j] <= num; j++) { check[i * primeList[j]] = true; if (i % primeList[j] == 0) { break; } } } System.out.println(count); } public static void main(String[] args) { int n = 100; euler(n); } }
求素数的解法不止这一种,一般除了暴力解法还有埃筛法,欧拉算法在埃筛法的基础上进行了优化,其中i*primeList[j] == 0是关键。