Pagini recente » Cod sursa (job #1521808) | Cod sursa (job #1609469) | Cod sursa (job #1257381) | Cod sursa (job #2911141) | Cod sursa (job #2230170)
import java.io.*;
import java.util.BitSet;
import java.util.StringTokenizer;
/**
* Created by ccarabet on 8/9/18.
*/
public class Main {
public static void main(String[] args) throws IOException {
InputStream inputStream = new FileInputStream("ciur.in");
OutputStream outputStream = new FileOutputStream("ciur.out");
try (InputReader inputReader = new InputReader(inputStream);
PrintWriter printWriter = new PrintWriter(outputStream)) {
printWriter.println(Solver.countPrimesUpTo(inputReader.nextInt()));
}
}
static class Solver {
public static int countPrimesUpTo(int N) {
BitSet bitSet = new BitSet(N + 1);
for (int i = 2; i * i <= N; i++) {
if (!bitSet.get(i)) {
for (int j = i * i; j <= N; j += i) {
bitSet.set(j);
}
}
}
// only bits in interval [2, N] may be set. we deduct set bits in this interval
return N - 1 - bitSet.cardinality();
}
}
static class InputReader implements AutoCloseable {
private BufferedReader bufferedReader;
private StringTokenizer stringTokenizer;
public InputReader(InputStream inputStream) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
stringTokenizer = null;
}
private String nextToken() {
if (stringTokenizer == null || !stringTokenizer.hasMoreTokens()) {
try {
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return stringTokenizer.nextToken();
}
public int nextInt() {
return Integer.parseInt(nextToken());
}
@Override
public void close() throws IOException {
bufferedReader.close();
}
}
}