Математический форум Math Help Planet
http://mathhelpplanet.com/

Сгенерировать добавки в заданном интервале
http://mathhelpplanet.com/viewtopic.php?f=48&t=83394
Страница 4 из 4

Автор:  Nataly-Mak [ 03 дек 2024, 13:53 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Цитата:
А вы именно их и ищете в основной программе, хорошие добавки. Можно увеличить генерацию добавок до #2027, но это же даже в ваш комп не поместится. А отбор добавок в заданном диапазоне займёт слишком много времени

Нет, мне не надо до #2027.
Если я правильно понимаю это до периода 2027#.
У вас перевёрнутое обозначение почему-то :)
Мне надо всего-то от периода 59# до 73# включительно.
Чтобы вот на этих периодах добавки были одинаковые, то есть любая добавка является добавкой на всех этих периодах.

Как поняли? Приём :)

Автор:  Nataly-Mak [ 03 дек 2024, 17:16 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Цитата:
А что если при поиске добавок на 59# тут же проверять их на 73#&
Я не особенно в теме, так что вряд ли предложу что-то новое или полезное

У меня сейчас работает программа, которая находит добавки на 71#.

Понятно, что на всех меньших периодах эти добавки тоже будут.
Правильно?

Тогда остаётся проверять эти добавки только на периоде 73#.

Ну, этот путь тривиальный и много не найдёшь.

А если по циклам посмотреть?
Не получится?

Да, самое интересное - найти такие добавки, которые на всех периодах, начиная с 59#, являются добавками.
Как показанные выше шесть добавок.
Вот как бы понять, что у этих добавок за свойство такое?
Как они в циклах генерации добавок выглядят?

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

Автор:  Nataly-Mak [ Вчера, 13:46 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

tomtitsin
у меня большая просьба.
Вашу программу надо изменить так, чтобы она выводила только те добавки, которые являются добавками на указанном периоде.
Не валидные не надо выводить.

Программу публикую

▼ программа
\l number_form_res.txt;

{\\find number of the given form in forvec for pt and w#
\\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];
w=73;
forms=[24614710419862929534438097,41851058213261398899827857];

\\-------------------------
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);

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];
print("form= ", form);
fr=vector(nw,i,form%prs[i]);
printf("prs: %3d\n",prs);
printf("frs: %3d\n",fr);
rn=vector(nw);
for( i=1, nw,
for( j=1,wk[i], if(fr[i]==wd[i][j], rn[i]=j; break)
));
printf("prm: %3d\n",rn);
if( vecprod(rn)==0,
printf("tupple with given form is not valid.\n\n"); next
, fnum= vecsum(vector(nw-1,i,(rn[i]-1)*wpk[i] ) )+rn[nw];
printf("form number is %d\n\n",fnum)
);

)}

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

Я нашла много добавок на периодах до 71# включительно.
А на периоде 73# многие из этих добавок перестали быть добавками (не валидные).

Автор:  Nataly-Mak [ Вчера, 13:50 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Вы пробовали проникнуть в тайну волшебных добавок? :)

У меня всё руки никак не дойдут.

Автор:  Nataly-Mak [ Вчера, 15:45 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

tomtitsin
гляньте, пожалуйста на эту проверку, проверялась добавка 1006882292528806742267

▼ проверка добавки
На периоде 59#
[0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240] pattern L=17
1922760350154212639070 period
[1, 2, 2, 2, 2, 2, 4, 8, 8, 14, 14, 20, 24, 26, 30, 36, 42]
form= 1006882292528806742267
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59]
frs: [ 1, 2, 2, 2, 10, 11, 7, 8, 7, 8, 11, 9, 18, 38, 44, 35, 25]
prm: [ 1, 2, 1, 1, 2, 2, 2, 5, 3, 5, 3, 6, 8, 25, 28, 25, 19]
form number is 550587669117211

На периоде 61#
[0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240] pattern L=17
117288381359406970983270 period
[1, 2, 2, 2, 2, 2, 4, 8, 8, 14, 14, 20, 24, 26, 30, 36, 42, 44]
form= 1006882292528806742267
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61]
frs: [ 1, 2, 2, 2, 10, 11, 7, 8, 7, 8, 11, 9, 18, 38, 44, 35, 25, 45]
prm: [ 1, 2, 1, 1, 2, 2, 2, 5, 3, 5, 3, 6, 8, 25, 28, 25, 19, 32]
form number is 24225857441157272

На периоде 67#
[0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240] pattern L=17
7858321551080267055879090 period
[1, 2, 2, 2, 2, 2, 4, 8, 8, 14, 14, 20, 24, 26, 30, 36, 42, 44, 50]
form= 1006882292528806742267
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67]
frs: [ 1, 2, 2, 2, 10, 11, 7, 8, 7, 8, 11, 9, 18, 38, 44, 35, 25, 45, 21]
prm: [ 1, 2, 1, 1, 2, 2, 2, 5, 3, 5, 3, 6, 8, 25, 28, 25, 19, 32, 17]
form number is 1211292872057863567

На периоде 71#
557940830126698960967415390 period
[1, 2, 2, 2, 2, 2, 4, 8, 8, 14, 14, 20, 24, 26, 30, 36, 42, 44, 50, 54]
form= 1006882292528806742267
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
frs: [ 1, 2, 2, 2, 10, 11, 7, 8, 7, 8, 11, 9, 18, 38, 44, 35, 25, 45, 21, 45]
prm: [ 1, 2, 1, 1, 2, 2, 2, 5, 3, 5, 3, 6, 8, 25, 28, 25, 19, 32, 17, 37]
form number is 65409815091124632601

На периоде 73#
[0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240] pattern L=17
40729680599249024150621323470 period
[1, 2, 2, 2, 2, 2, 4, 8, 8, 14, 14, 20, 24, 26, 30, 36, 42, 44, 50, 54, 56]
form= 1006882292528806742267
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73]
frs: [ 1, 2, 2, 2, 10, 11, 7, 8, 7, 8, 11, 9, 18, 38, 44, 35, 25, 45, 21, 45, 11]
prm: [ 1, 2, 1, 1, 2, 2, 2, 5, 3, 5, 3, 6, 8, 25, 28, 25, 19, 32, 17, 37, 9]
form number is 3662949645102979425609

На периоде 79#
[0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240] pattern L=17
3217644767340672907899084554130 period
[1, 2, 2, 2, 2, 2, 4, 8, 8, 14, 14, 20, 24, 26, 30, 36, 42, 44, 50, 54, 56, 62]
form= 1006882292528806742267
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79]
frs: [ 1, 2, 2, 2, 10, 11, 7, 8, 7, 8, 11, 9, 18, 38, 44, 35, 25, 45, 21, 45, 11, 77]
prm: [ 1, 2, 1, 1, 2, 2, 2, 5, 3, 5, 3, 6, 8, 25, 28, 25, 19, 32, 17, 37, 9, 61]
form number is 227102877996384724387757

Эта похожесть векторов - она ведь не случайна!!
Не так ли?

Автор:  tomtitsin [ Вчера, 17:34 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Nataly-Mak, такли :)
Я несколько в недоумении насчёт этой программки. Она я помню изначально была для поиска добавок и их номеров в некотором небольшом интервале и для применения КТО на 31# - 37#. И да, использовалась разово для 71#. Для конкретной добавки нет необходимости запускать цикл для КТО. Достаточно знать вектор остатков для этой добавки и векторы поиска. Перемножаем, прибавляем и получаем номер. Следует заметить, что номер добавки зависит от последовательности перебора. Но КТО гласит, что на интервале p# (так надо писать?) есть не более одного числа с конкретным набором остатков для [1..p]. Естественно, вектор остатков остаётся неизменным в общих позициях.
Скорее всего, я подхожу по любительски, но вроде бы КТО выдаёт добавки на случайном месте в диапазоне и пока нет способа по вектору остатков заранее определить, где получится добавка. Ясно только одно, что сама добавка получается одной и той же при любой последовательности перебора. Но организовать эту последовательность так, чтобы добавки появлялись в заданном интервале я не знаю как. Возможно, что те, кто этим занимается всерьёз, знают какие-то признаки.
Я слышал, что ваши друзья разработали программную реализацию применения КТО, которая значительно быстрее процедуры из библиотеки.
Вам лучше знать.

Автор:  Nataly-Mak [ Вчера, 19:08 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Цитата:
Я несколько в недоумении насчёт этой программки.

Какой "этой программки"?

Ничего не поняла из написанного в последнем вашем сообщении :(

Я вас просила изменить программу, которую показала тут
https://mathhelpplanet.com/viewtopic.php?p=488579#p488579

Эта программа определяет номер введённой добавки на заданном периоде или сообщает, что она не "valid", то есть не является добавкой на заданном периоде.
Правильно я понимаю?

Автор:  Nataly-Mak [ Вчера, 19:23 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Вот пример

form= 40706475749140371567797227
prs: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73]
frs: [ 1, 1, 2, 2, 3, 9, 6, 1, 4, 1, 2, 2, 2, 14, 35, 1, 42, 11, 12, 17, 26]
prm: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 22, 1, 31, 6, 10, 14, 0]
tupple with given form is not valid.

Что сие значит?

"кортеж с данной формой недействителен"

Я понимаю так, что проверенная добавка (form) не является добавкой на указанном периоде 73#.
Правильно?

Кстати, пожалуйста, раскажите, что означают эти три вектора?

Мне понятен только этот
prs: [  2,  3,  5,  7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73]


Второй вектор - это остатки по этим модулям?
А третий вектор (prm) что такое?

Автор:  tomtitsin [ Вчера, 19:48 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Конечно, правильно. Но вы странно понимаете отношение программиста к заказу. Вы хотите выкинуть вывод сообщения о невалидности.
Оно находится в этой строке.
printf("tupple with given form is not valid.\n\n"); next
Так выкиньте его сами в своём тексте программы:
next
Чего в этом сложного? А мне придётся копировать ваш текст, проверять его, тестировать. Это был разовый заказ, и я его выполнил. Самой проги у меня и не осталось. Она уже ваша и делайте с ней, что угодно. Потом вам захочется ещё что-то изменить, и я с радостью подскажу, какие изменения надо внести. Но я же не занимаюсь постоянно вашим проектом. Потом я не знаю, зачем это нужно. То есть не в глобальном смысле, а чисто по какой-то мелкой программке, которая что-то показала и исчезла. Если вы поймаете меня на ошибке, которая есть в программе, то это другое. А так это бесконечная пересылка. И модератор будет недоволен: что вы, понимаете ли, развели тут.

Ой, да тут продолжение. Если честно, то я не помню, что это за векторы. Да, вектор простых, вектор остатков и вектор положения остатка в векторе остатков КТО для данного простого. По моему. Ну так посмотрите по программе. Или вы её вообще не использовали? Вообще, я не понимаю, зачем она нужна.
Всегда рад вам оказать любезность (С- Мюллер) :)

Автор:  Nataly-Mak [ Вчера, 20:00 ]
Заголовок сообщения:  Re: Сгенерировать добавки в заданном интервале

Цитата:
Всегда рад вам оказать любезность (С- Мюллер)

Спасибо, вы очень любезны ;)

Страница 4 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/