Подсчитайте полупростые числа в заданном диапазоне [a..b]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Подсчитайте полупростые числа в заданном диапазоне [a..b]

Сообщение Anonymous »

Я решаю задачу Codility CountSemiprimes: подсчитайте полупростые числа в заданном диапазоне [a..b].

Описание задачи

Простое число – это целое положительное число X, имеющее ровно два различных делителя: 1 и X. Первые несколько простых целых чисел — 2, 3, 5, 7, 11 и 13.

Полупростое — это натуральное число, которое является произведением двух (не обязательно различных) простых чисел. Первые несколько полупростых чисел — 4, 6, 9, 10, 14, 15, 21, 22, 25, 26.

Вам даны два непустых массива P и Q, каждое из которых состоит из M целых чисел. Эти массивы представляют собой запросы о количестве полупростых чисел в указанных диапазонах.

Запрос K требует, чтобы вы нашли количество полупростых чисел в диапазоне (P[K], Q[K ]), где 1 ≤ P[K] ≤ Q[K] ≤ N.

Напишите эффективный алгоритм для следующих предположений:
  • N — целое число в пределах диапазона [1..50,000];
  • M — целое число в диапазоне [1..30,000];
  • каждый элемент массивов P, Q целое число в диапазоне [1..N];
    P ≤ Q.


Мое решение

Мой текущий результат: 66%, и проблема заключается в производительности для большого набора данных:

  • большой случайный результат, длина = ~ 30 000
  • все максимальные диапазоны


Тест показывает, что это должно занять около 2 секунд, но мое решение занимает более 7 секунд.

Это мое текущее решение

Код: Выделить всё

class Solution {
private static List getPrimes(int max) {
List primes = new ArrayList(max / 2);

for (int i = 0; i < max; i++)
if (isPrime(i))
primes.add(i);

return primes;
}

private static boolean isPrime(int val) {
if (val 

Подробнее здесь: [url]https://stackoverflow.com/questions/53902549/count-the-semiprime-numbers-in-the-given-range-a-b[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Простые числа в заданном диапазоне в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Простые числа в заданном диапазоне в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • WordPress: подсчитайте все комментарии пользователя, а затем подсчитайте метаданные в комментариях.
    Anonymous » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Получение списка всех дат в заданном диапазоне дат в JavaScript
    Anonymous » » в форуме Jquery
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Найти все предыдущие вторники в заданном диапазоне?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»