/
EugenyCh7
/
JavaAndScalaLessons
Обзор
Документация
Войти
/
EugenyCh7
/
JavaAndScalaLessons
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
JavaTest/src/ch7/ex1/Main.java
35 строк
1 KB
Eugeny Chekmarev
IDEA update
15 июн 2021, 21:11
15 июн 2021, 21:11
47fadf9
Код
Авторство
О чём код?
package ch7.ex1; import java.sql.Time; import java.time.Duration; import java.time.Instant; import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Instant start = Instant.now(); ArrayList<Integer> primes = sieveOfEratosthenes(N); int count = primes.size(); Instant end = Instant.now(); Duration difference = Duration.between(start, end); System.out.printf("Расчёт первых %d простых чисел занял %.3f секунд\n", count, difference.toMillis() / 1000.0); System.out.printf("%d-ое простое число = %d", count, primes.get(primes.size() - 1)); } public static final int N = 100_000_000; public static ArrayList<Integer> sieveOfEratosthenes(final int n) { BitSet primes = new BitSet(); primes.set(0, 2, false); primes.set(2, n + 1, true); for (int i = 2; i * i <= n; i++) { if (primes.get(i)) { for (int s = i * i; s <= n; s += i) { primes.set(s, false); } } } return primes.stream().boxed().collect(Collectors.toCollection(ArrayList::new)); } }