素数问题

问题一:输出不大于N的素数的个数。

Sieve of Eratosthenes 方法

public class PrimeSieve {
    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);

        // initially assume all integers are prime
        boolean[] isPrime = new boolean[N + 1];
        for (int i = 2; i <= N; i++) {
            isPrime[i] = true;
        }

        // mark non-primes <= N using Sieve of Eratosthenes
        for (int i = 2; i*i <= N; i++) {

            // if i is prime, then mark multiples of i as nonprime
            // suffices to consider mutiples i, i+1, ..., N/i
            if (isPrime[i]) {
                for (int j = i; i*j <= N; j++) {
                    isPrime[i*j] = false;
                }
            }
        }

        // count primes
        int primes = 0;
        for (int i = 2; i <= N; i++) {
            if (isPrime[i]) primes++;
        }
        System.out.println("The number of primes <= " + N + " is " + primes);
    }
}
时间: 2024-10-06 23:52:39

素数问题的相关文章

NYOJ 孪生素数问题

孪生素数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数.有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数. 输入 第一行给出N(0<N<100)表示测试数据组数. 接下来组测试数据给出m,表示找出m之前的所有孪生素数. (0<m<1000000) 输出 每组测试

NYOJ 26 孪生素数问题

孪生素数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数.有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数. 输入 第一行给出N(0<N<100)表示测试数据组数. 接下来组测试数据给出m,表示找出m之前的所有孪生素数. (0<m<1000000) 输出 每组测试

NYOJ26 孪生素数问题

离线算出规定范围内的所有结构,不算太难,主要是注意效率,用筛法来做. 孪生素数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数.有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数. 输入 第一行给出N(0<N<100)表示测试数据组数.接下来组测试数据给出m,表示找出m之前的所

【ACM】孪生素数问题

孪生素数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数.有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数. 输入 第一行给出N(0<N<100)表示测试数据组数.接下来组测试数据给出m,表示找出m之前的所有孪生素数.(0<m<1000000) 输出 每组测试数据

0073-简单的素数问题

简单的素数问题 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 已知三个素数的和为 n ,正整数 n 由键盘输入,计算并输出这三个素数乘积的最大值. 输入 一个正整数 n(给定的测试数据中 n 一定是偶数). 输出 一个数,表示三个素数乘积的最大值 输入示例 42 输出示例 782 其他说明 数据范围: 10 <= n <= 10000 . 这道题我们需要知道一些方法和常识. 首先,题目中说“给定的测试数据中n一定是偶数

数论及其应用——素数问题

数学是科学的女王,数论是数学的女王——高斯.  然后我再狗尾续个貂——素数是数论的女王. 谈及素数,可以牵扯出很多数学史上的美谈,例如前几天在知乎上看到关于“除去酒色,人类还怎么享受生活”的问题,在一个回答中就举个几个大科学家的例子,其中提到某个钟爱素数的数学家,选择再每月的素数天和妻子同居,一个月刚开始还好,但越到月末素数间隔变大,同居的日子也就变少. 在素数这块小地方,有很多著名的猜想,能证出来一些真的是非常非常的厉害,因为当今世界流传着这样一个传说,集齐七大世界数学难题,便可以召唤神龙,帮

孪生素数问题

描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数.有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数. 输入 第一行给出N(0<N<100)表示测试数据组数. 接下来组测试数据给出m,表示找出m之前的所有孪生素数. (0<m<1000000) 输出 每组测试数据输出占一行,该行为m范围内所有孪生素数组数. 样例输入 1 14 样例输出 4 1

又与素数问题 计算最大的素数

计算1~100之间最大的素数 vim prime.c

EularProject 41:最长的n位Pandigital素数问题

Pandigital prime Problem 41 We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example, 2143 is a 4-digit pandigital and is also prime. What is the largest n-digit pandigital prime that exists