Пусть

- это праймориал, произведение первых

простых чисел.
Пусть

это
A007814, максимальная степень двойки на которую делится

. Здесь

Присвоим

и далее будем присваивать

до тех пор, пока
- либо

- либо количество шагов превысило

Пусть

возвращает количество шагов, необходимое для выполнения первого условия либо возвращает

при выполнении второго условия.
Пусть также

это минимальное

, такое, что

.
И, наконец, пусть
![$$a_3(m,k)=[(a_2(m,k)-1)<\sum\limits_{j=1}^{a_2(m,k)-1}a_1(j,m,k)]$$ $$a_3(m,k)=[(a_2(m,k)-1)<\sum\limits_{j=1}^{a_2(m,k)-1}a_1(j,m,k)]$$](https://dxdy-01.korotkov.co.uk/f/4/8/8/488907a0085539c5c20ef5e1cedd7fe182.png)
Здесь квадратные скобки это скобки Айверсона, которые возвращают

если условие внутри них соблюдается и возвращают

в противном случае. По сути, этим условием мы проверяем наличие как минимум одного значения

.
Отфильтруем значения

для фиксированного

и произвольных

. Можно заметить, что все

имеют форму

где

и

это некоторые константы.
Можно заметить, что если записать

в виде

где

, то при фиксированном

и произвольных

значения

и

одинаковые.
Вот все, что мне удалось получить на данный момент:

Т.е. что мы ищем? Мы ищем два первых значения

, таких, что

при фиксированном

и даже не для всех

, а только для

. Через НОД этих двух значений мы находим

.
Вот прога:
Код:
p(n) = prod(j=1, n, prime(j))
a1(n, m, k) = my(A = n, B = 0); until(A%n == 0 || B>2, A+=m*2^(k*valuation(A,2)); B++); if(B < 3, B)
a2(m, k) = my(A = 1); until(a1(A, m, k) == 0, A++); A
a3(m, k) = my(A = a2(m, k)); sum(j=1, A-1, a1(j, m, k)) > (A-1)
v1 = vector(2, i, 0);
z=1; for(k=1,2, while(!(z%2 && a3(p(24)*z/2, 2^3)==1), z++); v1[k]=z; z++;);
print(gcd(v1))
Она ищет

если известно

.
Я думаю, что

для

это просто совпадение с факториалами.
Хотелось бы узнать, какие будут

и

для

.
Я не помещаю тему на форуме Околонаучный софт, поскольку предполагаю, что значения могут быть получены гораздо более легким путем, основанном на правильных рассуждениях.