Я нахожу код в java, чтобы найти простые числа, но чтобы найти следующий, мне нужно использовать это простое число с 8761 цифрами [P] (найдено с помощью этого код) и еще одно простое число, меньшее, чем P в данном диапазоне, прямо сейчас я ищу простые числа на расстоянии 250 миллионов.Найти числа больших чисел (~ 8000 цифр) в заданном диапазоне
Проблема заключается в нахождении всех простых чисел внутри этого диапазона. Используя сито эрастстостенов, я получил от 125 М (нечетные числа) до 6 миллионов вероятных простых чисел, прежде чем он стал медленным. Но это далеко, как я понял.
Поскольку BigInteger's .isPrime (1) занимает 3 минуты для КАЖДОГО номера, у меня бы были дети в колледже к тому времени, когда я закончу это.
В моем коде я использую расстояние между P и PRP, чтобы избежать использования BigIntegers. Также я храню это в .txt, с которого я читаю и пишу. Вот небольшая часть моего кода:
//Stores PRPs to List<Long> Erros = new ArrayList();
BigInteger Primo = new BigInteger("1");
while (Primo.longValueExact() <= Max){
while(Erros_Eliminados.size() < 200000){
Primo = Primo.nextProbablePrime();
BigInteger R1 = BPrimo_Dado.mod(Primo); //[BPrimo_Dado = P = 8761 Digits number]
long R = R1.longValue();
while(R <= Max){ //Max = 250000000
if(R >= Min){ //Min = 0
Erros_Eliminados.add(R);
}
R += Primo.longValue();
}
}
...
//removes the ErrosEliminados from Erros List and save it again to .txt
}
** Я также использую похожести коды для простых чисел между 250M и 1 миллиард, и больше, чем 1 миллиард (Чтение из bitlist) с некоторыми незначительными изменениями ...
Итак, вопрос: какой самый быстрый способ найти эти большие числа чисел? Есть ли лучший способ вместо сита? Я открыт для чего-нибудь ...
PS: Это мой первый вопрос, и, учитывая мой вопрос, это странно, что есть большая вероятность, что я нарушаю несколько правил поведения, например, расплывчатые или что-то в этом роде, поэтому простите меня, если это в этом случае, пожалуйста, сообщите, чтобы я мог что-то исправить.
Добро пожаловать в StackOverflow! Не стесняйтесь читать некоторые вопросы, пока вы ждете. http://stackoverflow.com/help/asking. Если вы считаете, что чего-то не хватает, не стесняйтесь [edit] –
Я мог бы неправильно понять ваш код здесь, но не должен иметь строку «BigInteger R1 = BPrimo_Dado.mod (Primo);' be 'BigInteger R1 = Primo.subtract (BPrimo_Dado.mod (Примо)); – SpiderPig
Почему вы это делаете? Это звучит как проблема X-Y. – erickson