А то и 4/6*m и 5/6*m встречается. А другие невозможны?
Очевидно возможен любой из 6.
Но не запустилось

Хм, похоже в сообщение вставил старый код, который потом поправил (добавил bad[] и его проверку вместо длинного if, а там и понадобился pr2[]), надо в export в строке перед parfor добавить и pr2:
export(nth,th,v,i1,i2,pows,p1,m,vp,npr,t0,pr2,bad);.
Ну так вот именно что Дмитрий, используя слово "длинный" вместо "большой", пытался избежать путаницы.
Нет, длинный он и есть длинный, про него и говорим сейчас, а про второй с 9-й страницы я давно забыл.
Опять-таки, чтоб не запутаться предлагаю считать p1 так, чтобы значение этого остатка всегда было меньше модуля m.
Как бы ещё
VAL в этом убедить ... Проще же лишние значения i учесть в i1,i2, а не в p1.
-- 12.10.2025, 13:56 --А то и 4/6*m и 5/6*m встречается. А другие невозможны?
Очевидно возможен любой из 6.
Расчёт подходящих значений (да, их может быть больше одного, смотря какой паттерн, примеры ниже):
Код:
\\ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20
v=[ 54910, 529, 12, 1573, 2738, 75, 194936, 841, 18, 961, 20, 5043, 3698, 15463, 1056, 14045, 338, 153, 4, 361, 1470 ];
\\ p pqrs pqr pqr pqr pqr p pqrs pqr pqrs pqr pqr pqr pqr p pqr pqr pqr pqrs pqrs p
nd=48;\\Количество делителей
ip=0;\\Перебирать будем по месту +0
{vp=v[ip+1];
print("v=",v);
print("m= ",m=lcm(v)*6/vp);
p0=(lift((chinese([Mod(-j+1, v[j]) | j<-[1..#v]])))+ip)/vp;
for(d=0,5,
p1=(p0+d/6*m)%m; x=p1*vp-ip; print1("d=",d,": ",y=[((x+j-1)/v[j])%6 | j<-[1..#v]]);
if(#select(t->(t%2==0||t==3),y)==0, print(" OK, p1=",p1) , print);
);}
Примеры для разных паттернов:
Код:
v=[54910, 529, 12, 1573, 2738, 75, 194936, 841, 18, 961, 20, 5043, 3698, 15463, 1056, 14045, 338, 153, 4, 361, 1470]
m= 3231767500965347277306803383324509858720
d=0: [1, 5, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 5, 5, 1, 3, 1, 5, 1]
d=1: [1, 5, 1, 1, 1, 5, 5, 5, 5, 1, 1, 1, 5, 5, 2, 5, 1, 1, 1, 5, 1]
d=2: [1, 5, 1, 1, 1, 5, 5, 5, 3, 1, 1, 1, 5, 5, 5, 5, 1, 5, 1, 5, 1]
d=3: [1, 5, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 2, 5, 1, 3, 1, 5, 1]
d=4: [1, 5, 1, 1, 1, 5, 5, 5, 5, 1, 1, 1, 5, 5, 5, 5, 1, 1, 1, 5, 1] OK, p1=2585411135997416929526970922772099743927
d=5: [1, 5, 1, 1, 1, 5, 5, 5, 3, 1, 1, 1, 5, 5, 2, 5, 1, 5, 1, 5, 1]
v=[110050456444, 118587876497, 188286357654, 152587890625, 137438953472, 290667031221, 570623341222, 137858491849]
m= 1338375256605151451992612220415039155649246936761775172469391360000000000000000
d=0: [1, 1, 5, 1, 4, 1, 1, 5]
d=1: [1, 1, 3, 1, 1, 1, 1, 5]
d=2: [1, 1, 1, 1, 4, 1, 1, 5]
d=3: [1, 1, 5, 1, 1, 1, 1, 5] OK, p1=781307056480115170046422423379072803780506895787740190391322159238619287154913
d=4: [1, 1, 3, 1, 4, 1, 1, 5]
d=5: [1, 1, 1, 1, 1, 1, 1, 5] OK, p1=1227432142015165654043959830184085855663589208041665247881119279238619287154913
v=[119164, 4913, 4374, 15625, 1024, 1029, 2662, 28561]
m= 3362423200636572072000000
d=0: [1, 1, 5, 1, 5, 1, 1, 5] OK, p1=171428771240519412408673
d=1: [1, 1, 1, 1, 2, 1, 1, 5]
d=2: [1, 1, 3, 1, 5, 1, 1, 5]
d=3: [1, 1, 5, 1, 2, 1, 1, 5]
d=4: [1, 1, 1, 1, 5, 1, 1, 5] OK, p1=2413044238331567460408673
d=5: [1, 1, 3, 1, 2, 1, 1, 5]
Последние два - это тестовый паттерн
[4*31^7,17^9,2*3^23,5^16,2^37,3*7^13,2*11^11,13^10] и он же с сокращенными степенями
[4*31^3,17^3,2*3^7,5^6,2^10,3*7^3,2*11^3,13^4].
Разумеется p1 будет зависеть и от номера перебираемого места ip.