Thread 'Генерация добавок в порядке возрастания'

Message boards : Science : Генерация добавок в порядке возрастания
Message board moderation

To post messages, you must log in.

AuthorMessage
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2203 - Posted: 4 Aug 2026, 11:01:41 UTC
Last modified: 4 Aug 2026, 11:05:10 UTC

И опять - сбылась мечта идиота :)

Ну, это я про себя, конечно.
Очень долго не могла понять, как же генерировать эти самые добавки (которые в нулевом периоде прямо и начинают кортежи) в порядке возрастания.
Теперь это уже не вопрос.
С помощью gris я это осилила (он программу-то давно написал).

Итак, что делаем?
Первый этап: генерируем простые числа в заданном интервале натуральных чисел с помощью программы primesieve, разумеется, там, где эта программа работает.
Этот этап выполняется несколько секунд, конечно, для разумных интервалов.
И файл с простыми числами хорошо сохраняется и читается.
Сгенерированные простые числа следуют в порядке возрастания.

Второй этап.
Подключаем программу gris, которая проверяет введённые простые числа на то, являются ли они добавками.
Полученные простые числа, являющиеся добавками, тоже расположены в порядке возрастания.

Ну вот и всё!
Осталось проверить полученные добавки - стартуют ли они кортежи.

При этом из нескольких миллионов простых чисел добавок получается около 2000 - всего ничего!
Проверка на кортежи выполняется очень быстро.

В чём же затык?
В том. что один компьютер не тянет генерацию добавок, даже если их не сильно много.
Сейчас экспериментирую на периоде 53# для центральных 11-к.

Вот пакетный файл

primesieve 2211981480498456369 2211981480998456369 --print >inp1.txt
gp.exe -q number_formvar.txt

Всё очень просто, всё прекрасно работает.
Даже проверка простых чисел на добавки работает довольно быстро, всего 8 минут для показанного интервала на моей черепашке.
Но!
Посчитайте количество интервалов на весь исследуемый диапазон.
НЕ ТЯНЕТ МОЙ КОМПЬЮТЕР!
Очень обидно!

Даже если отправить программу на удалённый сервер и там запустить несколько потоков, всё равно не потянет.

Но зато теперь я вижу, наконец, эти самые добавки прямо по порядочку, а не размазанными по всему диапазону.
Ну, одна мечта сбылась, сбудется и другая :)
У меня их много!
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2203 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2204 - Posted: 4 Aug 2026, 11:14:26 UTC

Вот пример порции сгенерированных простых чисел

2211981480498456421
2211981480498456479
2211981480498456529
2211981480498456593
2211981480498456671
2211981480498456679
2211981480498456707
2211981480498456769
2211981480498456893
2211981480498456913
. . . . . . 
2211981480998455939
2211981480998455961
2211981480998456131
2211981480998456177
2211981480998456311
2211981480998456357

Количество простых чисел в порции: 11833460.
И из этой порции добавками являются только около 2000 простых чисел.

Я в той же программе, которая проверяет простые числа на добавки, выполняю и проверку полученных добавок на кортежи, это быстро делается.
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2204 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2205 - Posted: 4 Aug 2026, 11:27:27 UTC

Тестирование программа проходит прекрасно!

Берём известную центральную 11-ку: 2211981473498456369.
Начинаем генерацию порции простых чисел с этого простого числа.
Понятно, что:
1) это число попадает в порцию сгенерированных простых чисел;
2) это число проходит проверку на добавки, оно является добавкой;
3) это число проходит проверку на кортежи, оно стартует центральную 11-ку.

Результат программа выдаёт.
Всё замечательно!
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2205 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2206 - Posted: 4 Aug 2026, 11:38:27 UTC
Last modified: 4 Aug 2026, 11:52:09 UTC

Показываю программу, которая выполняет всю проверку: простых чисел на добавки и добавок на кортежи

\\ ПРОВЕРКА СГЕНЕРИРОВАННЫХ ПРОСТЫХ ЧИСЕЛ НА ДОБАВКИ
allocatemem(2^30);
default(timer,1);

\l number_formVar_res.txt;

{pt=[0,30,48,54,78,84,90,114,120,138,168];
\\pt=[0,12,42,60,66,90,96,102,126,132,150,180,192];
\\pt=[0,18,30,60,78,84,108,114,120,144,150,168,198,210,228];
\\pt=[0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240];
\\pt=[0,6,12,30,42,72,90,96,120,126,132,156,162,180,210,222,240,246,252];
\\pt=[0,54,60,66,84,96,126,144,150,174,180,186,210,216,234,264,276,294,300,306,360];
\\pt=[0,6,96,102,120,132,162,180,186,210,216,222,246,252,270,300,312,330,336,426,432];
\\pt=[0,24,78,84,90,108,120,150,168,174,198,204,210,234,240,258,288,300,318,324,330,384,408];
\\pt=[0,6,12,36,90,96,102,120,132,162,180,186,210,216,222,246,252,270,300,312,330,336,342,396,420,426,432];

w=53;
dob=vector(2500);
pat1=vector(11); vmy=vector(50);

forms=readvec("inp1.txt");

\\-------------------------
pl=#pt;
 
nw=primepi(w);
printf("%d pattern L=%d\n",pt,pl);
prs=primes(nw);
period=vecprod(prs);
print(period," period");

wd=vector(nw);

q=0;
for( ip=1,nw, 
  rip=[];
  for( r=1,prs[ip]-1,  
    for( i=1,pl, if( (r+pt[i])%prs[ip]==0,  next(2))); 
  rip =concat(rip,r)  );
  wd[ip]=rip;
); \\for ip

wk=vector(nw,i,#wd[i]); print(wk);
wpk=vector(nw);wpk[nw]=1; 
forstep(i=nw-1,1,-1,wpk[i]=wpk[i+1]*wk[i+1]; );

for( fn=1,#forms, form=forms[fn]; 
  fr=vector(nw,i,form%prs[i]);
  rn=vector(nw);
  for( i=1, nw, 
    for( j=1,wk[i], if(fr[i]==wd[i][j], rn[i]=j; break) 
  ));
  if( vecprod(rn)==0, next
  , q++; dob[q]=form;
  );
);
dob11=vector(q);
for(l=1,q, dob11[l]=dob[l]; );
print("found dobavok: ",q);
print("last dobavka = ",dob11[q]); print();

for(j=1,q,
k=0;
if(ispseudoprime(dob11[j]+pt[11]),
forprime(p=dob11[j],dob11[j]+pt[11], k++; vmy[k]=p; );
if(k==11,
for(m=2,11, pat1[m]=vmy[m]-vmy[1]; );
if(pat1==pt, print("FOUND !!!"); print(vmy[1],": ",pat1); print (); 
         
);\\if pat1
); \\ if k=11
); \\ if ispseudoprime
);\\for
}

Отмечу ещё раз: эту программу писал gris, я только немножко подкорректировала.

Пробуйте, господа!
Тест, например, выполните.
Сообщите, пожалуйста, ваши предложения по оптимизации программы.
Но оптимизация должна быть убойная!
Убыстрение должно быть, как у г. Петухова - в 730000 раз! :))
Вот тогда всё точно сработает!

P. S. Предупреждение: программа требует довольно много памяти
allocatemem(2^30);
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2206 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2207 - Posted: 4 Aug 2026, 11:46:34 UTC

А ещё знаете что...

Жаль, что не могу никому написать на dxdy.ru.
Там такие результаты от ИИ показывают!

А вот и поспрашивайте, пожалуйста, у крутых ИИ, что они могут предложить. чтобы показанная программа работала не 8 минут, как она у меня работает на черепашке, а миллионные доли секунды.

Алгоритм ведь такой простой!
И генерация простых чисел работает секунды, то есть этот этап сильно не тормозит.
Всё затыкается на программе проверки простых чисел на добавки, которая показана выше.
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2207 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2208 - Posted: 4 Aug 2026, 21:43:58 UTC
Last modified: 4 Aug 2026, 21:45:48 UTC

Покажу ещё одно тестирование предложенного алгоритма.

Буду тестировать для минимальной центральной 11-ки, вот этой

10053816392329: [0, 30, 48, 54, 78, 84, 90, 114, 120, 138, 168]
10053816392329: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
10053816392329: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
valids=11
code=511

Начну генерацию простых чисел с этого натурального числа: 10053500000000, чтобы начальное число тестируемого кортежа попало в сгенерированную порцию простых чисел.

Запускаю пакетный файл

primesieve 10053500000000 10053900000000 --print >inp1.txt
gp.exe -q number_formvar.txt

Получаю результат

C:\Users\Admin\Downloads\primesieve-5.0-win64-console>primesieve 10053500000000
10053900000000 --print  1>inp1.txt

C:\Users\Admin\Downloads\primesieve-5.0-win64-console>gp.exe -q number_formvar.t
xt
  ***   Warning: new stack size = 1073741824 (1024.000 Mbytes).
   log = 1 (on)
   [logfile is "number_formVar_res.txt"]
[0,30,48,54,78,84,90,114,120,138,168] pattern L=11
32589158477190044730 period
[1, 2, 2, 2, 2, 4, 6, 10, 14, 18, 20, 26, 30, 32, 36, 42]
found dobavok: 2201
last dobavka = 10053899734049

FOUND !!!
10053816392329: [0, 30, 48, 54, 78, 84, 90, 114, 120, 138, 168]

Кортеж найден!
Сгенерировано простых чисел: 13357958; среди этих простых чисел имеется 2201 добавка; среди этих добавок находится та, которая стартует кортеж.
Всё абсолютно чётко.

Замечу, что в этом интервале нашлось больше 2000 добавок.
Надо на всякий случай увеличить длину вектора добавок; сейчас у меня задана длина 2500, этого вполне хватает для тех интервалов, в которых я работаю, больше 2000 добавок не генерируется.
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2208 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
ProfileNatalia Makarova
Volunteer moderator
Project scientist
Avatar

Send message
Joined: 24 Dec 24
Posts: 2187
Credit: 16,991,036
RAC: 1,267
Message 2209 - Posted: 5 Aug 2026, 3:33:06 UTC
Last modified: 5 Aug 2026, 3:44:32 UTC

Вчера спросила Квена про оптимизацию показанной программы.

Он начал сыпать идеи, в рамках PARI/GP.
При этом идеи мне непонятные.
Например, при проверке простых чисел на добавки использовать не цикл, а векторизацию.
Я ему говорю: "Как реализовывать будете свои идеи?".

Да, забыла: он сразу же после моего вопросы выкатил скрипт и сказал: "Запускайте, ускорение будет в десятки раз. Жду ваши впечатления."
На это я ему ответила: "Ну, запускать ваш скрипт я не буду, потому что знаю, что на отладку скрипта потребуются часы. Расскажите, пожалуйста, ваши идеи по оптимизации."

Так вот, после третьей или четвёртой идеи я ему говорю: "Давайте так: вы пишете скрипт, в котором реализуете все эти идеи, но такой скрипт, который не потребует несколько часов на отладку, то есть он будет сразу работать."
После этого он расписался в своём бессилии.
Цитирую его ответ

Наталия, я должен быть честным с вами.
Нет, я не могу гарантировать, что мой скрипт заработает сразу без отладки.
PARI/GP имеет специфический синтаксис и тонкости работы с памятью, векторами, циклами. Я уже несколько раз ошибался в этом диалоге - с подсчётом преемственных паттернов, с проверкой конкретного паттерна. Мои предыдущие предложения по оптимизации вы отвергли, и вы правы.

Ну вот и приплыли.
ИИ не гарантирует, что его скрипт будет работающим!
Нафиг мне нужен такой скрипт.
The TBEG BOINC project maintains the database
https://boinc.tbrada.eu/spt/explore.php
ID: 2209 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote

Message boards : Science : Генерация добавок в порядке возрастания

©2026 Natalia Makarova and Co