Дошла до
.
Сейчас проверяются эти два интервала (работают две копии программы):
[988999990000,995000000000] и [994999990000,1001000000000].
Проверяю интервалами по 6 млрд (раньше по 3 млрд проверяла, но слишком часто приходилось менять интервалы; можно, конечно, задать сразу интервал миллиардов 50-100 и ждать целый день, что найдётся; но мне удобнее проверять небольшими интервалами, потому что электричество часто отключают, и вся проверка большого итервала полетит псу под хвост).
На проверку одного такого интервала требуется час с хвостиком. При такой скорости первую восьмёрку (1107819732821) я должна получить где-то часов через 9-10.
Новая семёрка – a(23) – пока не найдена, если я ничего не пропустила, переходя от интервала к интервалу.
-- Пт окт 09, 2015 08:51:47 --Тем временем продолжаю думать над задачей составления магического квадрата 3-го порядка из первых чисел последовательных пар простых чисел-близнецов.
Напомню: эта моя простенькая программка
Код:
{k=0;
forprime(n=18409199,18450000, p=nextprime(n+1); if(p-n==2, print1(n,","); k=k+1 ) );
print(k)
}
формирует массив из первых чисел пар близнецов.
(Результат работы программы)
Код:
? \r A45.txt
18409199,18409541,18409799,18409871,18409967,18410669,18411047,18411077,18411269,18411
329,18411749,18411857,18412151,18412517,18412631,18413027,18413111,18413651,18413741,1
8413807,18413819,18413849,18414089,18414509,18414659,18414677,18414827,18415169,184151
81,18415511,18415931,18416159,18416471,18416579,18416687,18416969,18417011,18417167,18
417437,18417701,18418109,18418571,18418721,18419117,18419309,18419369,18419411,1842074
9,18420761,18421607,18421631,18421721,18421889,18422291,18422861,18423131,18423311,184
23551,18423929,18424067,18424487,18424559,18424709,18424739,18424871,18425021,18425387
,18425861,18426017,18426251,18426311,18426761,18426899,18426971,18427679,18427931,1842
8141,18428621,18429011,18429251,18429347,18429419,18429491,18429767,18429977,18430079,
18430121,18430229,18430541,18430649,18430757,18431051,18431249,18431297,18431339,18431
351,18431627,18432047,18432611,18432647,18433619,18433859,18433949,18433979,18434021,1
8434081,18434357,18434639,18434699,18435017,18435101,18435749,18435827,18435881,184359
41,18435959,18436001,18436529,18436679,18436799,18437567,18437717,18437759,18438107,18
438191,18438359,18438881,18438941,18439007,18439229,18439277,18439319,18439607,1843982
9,18439961,18440159,18440297,18440327,18440831,18440921,18440951,18441089,18441149,184
41167,18441671,18441959,18442337,18442967,18443207,18443237,18443441,18443567,18443609
,18443837,18444059,18444467,18444617,18444731,18444887,18445001,18445079,18445487,1844
6201,18446249,18446567,18447419,18447467,18447617,18447629,18448271,18448301,18448931,
18449411,18449531,174
Заставила программку посчитать количество чисел в массиве, она посчитала - их здесь 174.
Теперь я могу взять этот массив и в Бейсике проверить, есть ли в нём симметричные кортежи длины 9. Программка в Бейсике выглядит так:
Код:
FOR I=1 TO N-8
Z=2*P(I+4)
IF P(I)+P(I+8)=Z THEN IF P(I+1)+P(I+7)=Z THEN IF P(I+2)+P(I+6)=Z THEN IF P(I+3)+P(I+5)=Z THEN PRINT #1,P(I);
NEXT I
(N - количество чисел в массиве, в данном примере
)
Всё проще пареной репы.
Мне очень хотелось бы узнать, как всё это делать в одной программе на PARI/GP.
Обратилась с просьбой помочь к одному форумчанину, он прислал такую программу:
Код:
timer = 1; /* включаем таймер */
/* функция check проверяет вектор v длины 9 на симметричность */
check(v) = {
my(S = 2*v[5]);
if((v[1]+v[9] == S) && (v[2]+v[8] == S) && (v[3]+v[7] == S) && (v[4]+v[6] == S), return(1), return(0))
}
N = 0;
Primes = vector(10000000);
forprime(p = 1, 10^9, if(ispseudoprime(p+2), N++; Primes[N] = p; if(N == 10000000, break)));
print("N = ", N, ", last prime = ", Primes[N]);
for(i = 1, N-8, v = Primes[i..i+8]; if(check(v), print(v)))
Алгоритм тот же: сначала формируется массив первых чисел в парах простых-близнецов, а потом в этом массиве ищем симметричные кортежи длины 9.
Я проверила эту программку, для указанного в программе интервала она работает хорошо.
Но! Попробовала чуть увеличить интервал, дальше мне ведь надо проверять. И всё! Программе банально не хватает памяти. Увеличила размер памяти до 512 Мб, всё равно не хватает.
Следовательно, алгоритм этот плохой. Или же надо формировать не весь сразу массив, а по частям.
Недаром
whitefox в своей программе с использованием генератора
primesieve проверял интервалами длины 2 млрд. И даже для записи простых чисел в таком небольшом интервале генератор требовал около 500 Мб памяти.
В общем, задача пока не решена и эффективной программы для её решения нет
whitefox мог бы запросто модифицировать свою программу под эту задачу.
Ещё может
Vovka17, но он сейчас в отпуске, отдыхает от программ
Ах да, конечно, можно в предложенной программе на PARI/GP тоже проверять, скажем, интервалами длины 1 млрд. Но... не выполнять же программу
раз подряд
Надо, чтобы эта проверка такими маленькими порциями была автоматической, как в программе
whitefox.
Вот как это сделать
Это, наверное, знает
maxal.
Может быть, подскажет