Cod sursa(job #2606677)

Utilizator lev.tempfliTempfli Levente lev.tempfli Data 28 aprilie 2020 11:27:23
Problema Ciurul lui Eratosthenes Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.23 kb


import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws IOException {
        File file = new File("ciur.in");
        Scanner scanner = new Scanner(file);

        int n = scanner.nextInt();
        Eras_sieve eras_sieve = new Eras_sieve(n);

        int k = 0;
        for (int i = 2; i <= n; i++)
            if (eras_sieve.isPrime(i)) k++;

        FileWriter fileWriter = new FileWriter("ciur.out");
        PrintWriter printWriter = new PrintWriter(fileWriter);

        printWriter.print(k);

        printWriter.close();
        fileWriter.close();
    }
}

class Eras_sieve {
    public Eras_sieve(int nn) {
        n = nn;
        primes = new ArrayList<>(Collections.nCopies(n + 1, Boolean.TRUE));
        generate();
    }

    boolean isPrime(int i) {
        return primes.get(i);
    }

    private void generate() {
        primes.set(0, false);
        primes.set(1, false);
        for (int i = 2; i <= n; i++) {
            if (primes.get(i)) {
                for (int j = 2 * i; j <= n; j += i)
                    primes.set(j, false);
            }
        }
    }

    private int n;
    ArrayList<Boolean> primes;
};