Я пытаюсь найти, сколько простых чисел я могу получить, пока продукт из двух больших больше Long.MAX_VALUE.Это лучший способ найти максимальное количество чисел, с которыми я могу справиться?
Это занимает более получаса (и ГЗ ОЗУ)
public class Main {
public static void main(String[] args) {
ArrayList <Long> primes= new ArrayList<Long>();
primes.add(2L);
long i=3L;
// Looping from 3, to the limit
while (primes.size()<2||(primes.get(primes.size()-1)*primes.get(primes.size()-2)<Long.MAX_VALUE)) {
boolean isPrime = true;
long maxDiv =Math.round(Math.sqrt(i));
int j=0;
while(primes.get(j)<maxDiv && isPrime) {
if (i % primes.get(j) == 0) {
isPrime = false;
}
j++;
}
if (isPrime) {
primes.add(i);
System.out.println(i);
}
i=i+2;
}
System.out.println("max size is: "+primes.size());
}
}
EDIT
Я также заинтересован в том, сколько простых чисел я получаю до достижения этого предела. Таким образом, подход сверху вниз не будет выполнять эту работу.
Во всяком случае, я понял, что я смог бы достичь тех двух цифр в моем приложении, я стал бы богат, как ад, в то же время :)
Я не могу понять отрицательные голоса по этому вопросу. –
Согласен, я не вижу причин для отрицательного голоса, учитывая, что вы сделали честное усилие и предоставили код. отрицательный голос всегда должен быть объяснен комментарием (интересно, почему это не вызвано StackOverflow). Повторите свою проблему, я предлагаю вам прочитать о сите эратостенов: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes –
Кто-то подал близкий голос за этот вопрос, потому что «Вопросы, предлагающие нам рекомендовать или найти книгу , инструмент, библиотека программного обеспечения, учебник или другой ресурс вне сайта не относятся к теме для переполнения стека ». WTF? – samgak