|
|
Вот как у меня сделано: Только в показанном мною паттерне не 3^2, а 3^5. То есть формула становится проще, но шаг-то всё равно 6-кратный. Про формулу не скажу, она похожа на правильную для 6-ти кратного шага, но точнее можно определить шаг по количеству допустимых остатков: Код: {v=[63, 3610, 3179, 12, 17797, 3362, 75, 392, 841, 18, 2209, 20, 1587, 242, 6727, 96, 14045, 338, 243, 68, 35131]; print("v=",v); print("m= ",m=lcm(v)); n0=lift(chinese([Mod(-j+1, v[j]) | j<-[1..#v]])); for(d=0,5, n=n0+m*d; print1("d=",d,": ",y=[((n+j-1)/v[j])%6 | j<-[1..#v]]); if(#select(t->(t%2==0||t==3),y)==0, print(" OK, n0=",n) , print); );} Запуск: v=[63, 3610, 3179, 12, 17797, 3362, 75, 392, 841, 18, 2209, 20, 1587, 242, 6727, 96, 14045, 338, 243, 68, 35131] m= 229403502054304075118105309394590566946400 d=0: [1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 4, 5, 1, 1, 5, 5] d=1: [1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 1, 5, 1, 3, 5, 5] d=2: [1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 4, 5, 1, 5, 5, 5] d=3: [1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 1, 5, 1, 1, 5, 5] OK, n0=742745703976917864157851884948204505669969 d=4: [1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 4, 5, 1, 3, 5, 5] d=5: [1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 5, 5, 1, 5, 1, 5, 5, 5] OK, n0=1201552708085526014394062503737385639562769Надеюсь два допустимых остатка по модулю 6 хорошо видны? Исправление 5 на 2 в for и %6 на %2 в следующей строке даёт такие допустимые остатки по модулю 2: d=0: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1] d=1: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] OK, n0=283938699868309713921641266159023371777169Именно такое n0 я и указал в тестовой программе.
|
|