景苒的博客

导航

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是关键。

posted on 2022-03-24 20:39  景苒  阅读(260)  评论(0编辑  收藏  举报